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

推薦する

JSでHTML本文のスタイルを変更する

目次1. 本来の定義2. JS操作、幅の変更を例に3. 効果: 幅が変更されました 1. 本来の定義...

UbuntuにMySQLデータベースをインストールする方法

Ubuntu は、Linux をベースにした無料のオープンソース デスクトップ PC オペレーティン...

Linux で xargs コマンドを使用する詳細なチュートリアル

みなさんこんにちは。私は梁旭です。 Linux を使用しているときに、いくつかのコマンドを連結する必...

モバイルデバイスにおける適応レイアウトの問題に関する簡単な説明 (レスポンシブ、rem/em、Js ダイナミクス)

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイ...

ウェブサイトの速度を上げる6つの方法

1. .js ライブラリ ファイルのアドレスを Google CDN アドレスに置き換えます。 (G...

spring-boot と docker-java に基づいて Docker コンテナの動的な管理と監視を実装します [完全なソース コードのダウンロード付き]

Docker入門Docker はオープンソースのアプリケーション コンテナ エンジンです。従来の仮...

Web ページは何ピクセルで設計すればよいでしょうか?

多くのウェブデザイナーは、ウェブページのレイアウトを設計する際に、インターフェースウェブページの幅に...

LINUX ポートが占有されているかどうかを確認します

ポートが占有されているかどうかは、これまで一度もわかりませんでした。多くの人に尋ねて、ようやくわかり...

MySQL 5.7のワンクリックインストールとパスワードポリシーの変更方法

1.Mysqlスクリプトのワンクリックインストール [root@uat01 ~]# cat Inst...

ローカル Docker に Postgres 12 + pgadmin をインストールする方法 (Apple M1 をサポート)

目次導入Intel CPUをサポートApple M1のサポートテスト導入このプロジェクトでは最近、P...

MySQL マルチテーブルクエリの詳細な説明

よく食べて十分に休息を取るというのは簡単なことのように思えますが、実際に実行するのはそれほど簡単では...

docker で golang イメージに基づいて ssh サービスを構築する方法

以下は、docker の golang イメージに基づいて ssh サービスを構築するためのコードで...

htm 初心者ノート(初心者は必ず読んでください)

1. HTMLとは何かHTML (ハイパーテキスト マークアップ言語): ハイパーテキスト マーク...

MySQL/MariaDB ルートパスワードリセットチュートリアル

序文パスワードを忘れることは、よく遭遇する問題です。MySQL または MariaDB データベース...

MySQLループは数千万のデータを挿入する

1. テストテーブルを作成する テーブル `mysql_genarate` を作成します ( `id...