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

推薦する

Linux での mysql-5.7.28 インストール チュートリアル

1. 公式ウェブサイトから Linux バージョンをダウンロードします: https://dev.m...

LinuxはRsync+Inotifyを使用してローカルとリモートのデータのリアルタイム同期を実現します。

0x0 テスト環境本社本番サーバーと支社バックアップサーバーはリモートデータバックアップが必要です...

MySQL マスタースレーブレプリケーションの読み書き分離構造の詳細な説明

MySQL マスタースレーブ設定MySQL のマスター/スレーブ レプリケーションと読み取り/書き込...

Win10 MySQLでCSVをエクスポートする2つの方法

Win10 で csv をエクスポートする方法は 2 つあります。1 つ目はツールを使用することです...

React サーバーサイドレンダリング原則の分析と実践

ほとんどの人は、サーバーサイド レンダリング (SSR と呼んでいます) の概念について聞いたことが...

MySQL 8.0.13 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...

Bootstrapグリッドの垂直および水平配置の詳細な説明

目次1. Bootstrap グリッドレイアウト2. 垂直方向の配置2.1 行タグの垂直方向の配置を...

Centos7 での DNS サーバーの構築の概要

目次1. プロジェクト環境: 2: DNSサーバーの設定i: 前方解析を構成する: ii: 逆解像度...

ReactでCSSスタイルを動的に変更する2つの方法の詳細な説明

最初の方法: デモとしてボタンをクリックしてテキストを表示または非表示にするクラスを動的に追加します...

意外と知らないLinuxのSSHコマンドの使い方7選を徹底解説

システム管理者は複数のサーバーを同時に管理する場合があり、これらのサーバーは異なる場所に配置されてい...

Nginx ログ管理の概要

Nginx ログの説明アクセス ログを通じて、ユーザーの地理的起源、ジャンプ元、使用端末、特定の U...

Nginx+SpringBoot による負荷分散の実装例

負荷分散の概要Nginx の負荷分散実装を紹介する前に、負荷分散の分類について簡単に説明します。負荷...

HTML テキストエスケープのヒント

今日、CSDN で HTML テキスト エスケープのちょっとしたトリックを見ましたが、とても簡単です...

JS を使って 1 分で github+Jekyll ブログに訪問カウント機能を追加する実装

目次1分でgithub+Jekyllブログにトラフィック機能を追加する1. ジェクルとは何か1. J...