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 コンポーネントを実装するための完全なコード

推薦する

Tomcat maxPostSize設定実装プロセス分析

1. maxPostSize を設定する理由は何ですか? tomcat コンテナには送信データのサイ...

HTML テーブルタグチュートリアル (24): 行の水平方向の配置属性 ALIGN

水平方向では、行の配置を左、中央、右に設定できます。基本的な構文<TR ALIGN="...

image/x-png の ContentType について

これにより、png ファイルのアップロードも不可能になりました (後で情報を調べたところ、レジストリ...

WeChat アプレット計算機の例

WeChatアプレット計算機の例、参考までに、具体的な内容は次のとおりです。インデックス.wxml ...

フロントエンドにアニメーション遷移効果を実装する方法

目次導入従来のトランジションアニメーションCSS トランジションアニメーションjsアニメーション従来...

純粋な CSS3 で水平無限スクロールを実装するためのサンプル コード

この記事の例はすべて小さなプログラムで書かれていますが、実装される機能には影響しません。 wxmlル...

Docker インストール Nginx チュートリアル 実装図

Nginx をインストールして試してみましょう。画像はクラスであり、コンテナはオブジェクトであること...

js でシンプルなタブを実装する

タブ選択カードは、実際の Web ページで非常に頻繁に使用されます。基本的に、すべての Web ペー...

SpringBoot と Docker の統合の詳細なプロセス

目次1. デモプロジェクト1.1 インターフェースの準備1.2 構成の準備2. Dockerがリモー...

vue3とvue2の利点の比較

目次利点1: diffアルゴリズムの最適化利点2: ホイスト静的静的リフティング利点3: cache...

MySQL 8.0.22 圧縮パッケージの完全なインストールと構成のチュートリアル図 (テスト済みで効果的)

1. zipインストールパッケージをダウンロードするMySQL サーバー 8.0.22 の圧縮パッ...

Docker swarm の簡単なチュートリアル

3つの仮想マシン132、133、134を群がらせる1. クラスターを初期化し、自分自身をクラスターに...

Vueバスの簡単な使い方

Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...

タブステータスバーの切り替え効果を実現するための js と jQuery

今日は、タブ バーをクリックして切り替えるという目的を実現するために、js と jQuery を使用...