Nginx+SSL による双方向認証を実装するためのサンプル コード

Nginx+SSL による双方向認証を実装するためのサンプル コード

まずディレクトリを作成する

cd /etc/nginx
mkdir ssl
cd ssl

CA と自己署名

CA秘密鍵を作成する

openssl genrsa -out ca.key 2048

CAルート証明書(公開鍵)を作成する

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

知らせ:

1. 共通名は任意に記入できます
2. 間違いを避けるために、その他の必須情報もすべて入力してください。

サーバー証明書

サーバー側の秘密鍵を作成します。

openssl genrsa -out server.pem 1024
openssl rsa -in server.pem -out server.key

署名リクエストを生成します:

openssl req -new -key server.pem -out server.csr

知らせ:

1. サービスにアクセスする際は、Common Nameにドメイン名を入力する必要があります。ここではusb.devを使用します。次のNGINX設定では、
2. 間違いを避けるために、その他の必要な情報もすべて入力します(CAルート証明書と一致させるため)。

CA発行

openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt

クライアント証明書

サーバー証明書と同様

知らせ:

1. 共通名は任意に記入できます
2. 間違いを避けるために、その他の必要な情報もすべて入力します(CAルート証明書と一致させるため)。

必要な証明書が準備できたので、NGINX の設定を開始できます。

Nginx の設定

サーバー{
    聞く 443;
    サーバー名 usb.dev;

    インデックス index.html;

    ルート /data/test/;

    sslオン;
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_client_certificate /etc/nginx/ssl/ca.crt;
    ssl_verify_client をオン;
}

検証をリクエストする

検証プロセスは、別のマシンまたはローカル マシンで実行できます。usb.dev を解決するには、/etc/hosts も構成する必要があります。

IP アドレス usb.dev

認証にブラウザを使用する場合は、クライアント証明書を p12 形式でエクスポートする必要があります。

openssl pkcs12 -export -clcerts -in client.crt -inkey client.pem -out client.p12

サーバーからいくつかの証明書をダウンロードし、信頼できる証明書リストにインストールします。生成された p12 ファイルをクリックし、証明書のパスワードを入力して個人リストにインストールします。
次にブラウザを閉じてドメイン名を再入力すると、SSL 双方向検証の証明書プロンプトが表示されます。証明書を選択するだけです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • SSL を実装するために nginx を設定する方法の例
  • docker に基づいて nginxssl 設定を開始する
  • Nginx SSL証明書設定エラーの解決策
  • Nginx ドメイン名 SSL 証明書の構成 (Web サイトの http を https にアップグレード)
  • Nginx ロードバランシング/SSL 構成の実装
  • nginx で SSL 証明書を設定して https サービスを実装する方法
  • SSL で Nginx リバース プロキシを構成する簡単な手順
  • Centos7.x での Nginx のインストール、SSL 設定、一般的なコマンドの詳細な説明
  • nginx ssl を設定して https アクセスを実装する手順 (初心者向け)
  • nginxとIISで使用できるSSL証明書を作成する

<<:  JS初心者が配列を処理するための実践的な方法のまとめ

>>:  vue backtop コンポーネントを実装するための完全なコード

推薦する

メニューノードのすべての子ノードを再帰的に検索する MySQL メソッド

背景プロジェクトにはメニューノードのすべてのノードをチェックする要件があります。オンラインでチェック...

Mysqlの日付と時刻関数を扱う記事

目次序文1. 現在の時刻を取得する1.1 現在の日付と時刻を返す1.2 現在の日付を取得する1.3 ...

Flexレイアウトを使用してヘッドの固定コンテンツ領域のスクロールを実現する方法

ページ ヘッダーの固定レイアウトは、以前は position:fixed を使用して実装されていまし...

WebページのレイアウトではIE6の互換性の問題を考慮する必要があります

下の図は、当社のウェブサイト統計システムの訪問者詳細におけるブラウザ閲覧率を示しており、IE6 が ...

MySQL の 3 つの Binlog 形式の概要と分析

1つ。 Mysql Binlog フォーマットの紹介 Mysql binlog ログには、State...

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

NavicatがMySQLに接続すると、10060、1045エラーとmy.iniの場所が報告されます。

Navicat は、データベースに接続するときにエラー 10060 および 1045 を報告します...

MySQL データベース テーブルとデータベース パーティショニング戦略

まず、テーブルを分割する必要がある理由について説明します。データシートが数百万に達すると、1 回のク...

ウェブデザインの経験とスキルの概要

■ ウェブサイトのテーマ計画 ウェブサイトのテーマが断片化しすぎないように注意してください。一般的に...

vue3+TypeScript+vue-routerの使い方

目次使いやすいプロジェクトを作成するvue-cli 作成ヴィートクリエイションvue-routerを...

Zabbix で Windows のパフォーマンスを監視する方法

背景情報最近、Windows パフォーマンスに関する本を読み直しています。以前は SCOM 監視を使...

Vueはスクロールバースタイルを実装します

最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみ...

MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明

1. デッドロックとは何ですか?正式な定義は次のとおりです: 2 つのトランザクションが相手側で必要...

fileReader 使用時の落とし穴と解決策

目次fileReader に関する落とし穴iOS における FileReader の落とし穴 (イメ...

CSS3で実装されたスライドメニュー

結果:実装コード: <!DOCTYPE html><html class=&quo...