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 InnoDBエンジンのインデックスとストレージ構造の詳細な説明

序文Oracle や SQL Server などのデータベースには、ストレージ エンジンが 1 つだ...

Google Chromeの自動入力問題に対する完璧な解決策

Google Chrome では、ログインに成功すると、パスワードを記憶するかどうかを尋ねるメッセー...

MySQLデータベースが予期せずクラッシュし、テーブルデータファイルが破損して起動できなくなる問題を解決します。

問題: MySQL データベースが予期せずクラッシュしたため、データベースを起動できませんでした。エ...

Vueプロジェクトが完了した後にプロジェクトを最適化する方法の例

目次1. 開発モードとリリースモードに異なるパッケージエントリポイントを指定する2. 外部CDNリソ...

MySQL 8.0.12 インストール グラフィック チュートリアル

MySQL8.0.12 インストールチュートリアルをみんなで共有します。 1. インストール1.イン...

MySQL 文字セットの変更に関する実践的なチュートリアル

序文: MySQL では、システムが多くの文字セットをサポートしており、異なる文字セット間にはわずか...

ウェブページで Enter キーを押すと自動的にフォームを送信し、他のページにジャンプするソリューション

ウェブページでEnterキーを押すと、フォームは自動的に送信され、他のページに移動します。クエリフォ...

Linux ハードウェア構成コマンドの例

ハードウェア ビュー コマンドシステム # uname -a # カーネル/オペレーティング システ...

Dockerコンテナデータをコピーしてバックアップする方法の詳細な説明

ここでは、Jenkins コンテナを例に 3 つの方法を紹介します。方法1コンテナをイメージにパッケ...

ウェブデザインの詳細分析に関する詳細な議論

設計業務では、設計者がレビューに参加したり、リーダーの一部が設計案の詳細が足りないと言っているのをよ...

Dockerコンテナを閉じずに終了する方法の詳細な説明

Docker コンテナに入った後、コンテナを終了すると、コンテナは Exited 状態に変わります。...

MySQL で union all を使用してユニオンソートを取得する方法

プロジェクトでは、何らかの不可逆的な理由により、テーブルに保存されたデータがページの表示要件を満たす...

MySql5.7.21 インストールポイント記録メモ

ダウンロードしたバージョンは、Zip 解凍版、Windows システムです。長い間 Windows ...

zabbix を使用して ogg プロセスを監視する (Linux プラットフォーム)

以前作成されたデータベースの ogg プロセスは、発見されるまでの約半月間ダウンしていました。起動で...

MySQL バージョンは、2 つのタイムスタンプ型の値をサポートしていないバージョンよりも低いです。

MySQL エラー:エラー コード: 1293 テーブル定義が正しくありません。CURRENT_T...