nginx プロキシ サーバーで双方向証明書検証を構成する方法

nginx プロキシ サーバーで双方向証明書検証を構成する方法

証明書チェーンを生成する

スクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント証明書を生成します。

このスクリプトは(改変)から派生したものです
https://stackoverflow.com/questions/26759550/how-to-create-own-self-signed-root-certificate-and-intermediate-ca-to-be-importe

中間証明書のドメイン名は localhost です。

#!/bin/bash -x

セット-e

`echo root-ca 中間`のCの場合;

 mkdir $C
 cd $C
 mkdir certs crl newcerts プライベート
 CD ..

 エコー 1000 > $C/シリアル
 $C/index.txt をタッチ $C/index.txt.attr

 エコー '
[ 約 ]
default_ca = CA_default
[ CA_デフォルト ]
dir = '$C' # すべてのものが保存される場所
certs = $dir/certs # 発行された証明書が保存される場所
crl_dir = $dir/crl # 発行された crl が保存される場所
database = $dir/index.txt # データベースのインデックス ファイル。
new_certs_dir = $dir/newcerts # 新しい証明書のデフォルトの場所。
certificate = $dir/cacert.pem # CA証明書
serial = $dir/serial # 現在のシリアル番号
crl = $dir/crl.pem # 現在の CRL
private_key = $dir/private/ca.key.pem # 秘密鍵
RANDFILE = $dir/.rnd # プライベート乱数ファイル
nameopt = デフォルト_ca
certopt = デフォルト_ca
ポリシー = ポリシーマッチ
デフォルト日数 = 365
デフォルト_md = sha256

[ ポリシーマッチ ]
countryName = オプション
州または州名 = オプション
組織名 = オプション
organizationalUnitName = オプション
commonName = 指定
emailAddress = オプション

[必須]
要求拡張機能 = v3_req
識別名 = 必須識別名

[必須識別名]

[v3_必須]
基本制約 = CA:TRUE
' > $C/openssl.conf
終わり

openssl genrsa -out ルートCA/プライベートCA.キー 2048
openssl req -config root-ca/openssl.conf -new -x509 -days 3650 -key root-ca/private/ca.key -sha256 -extensions v3_req -out root-ca/certs/ca.crt -subj '/CN=Root-ca'

openssl genrsa -out 中間/プライベート/中間.キー 2048
openssl req -config middle/openssl.conf -sha256 -new -key middle/private/intermediate.key -out middle/certs/intermediate.csr -subj '/CN=localhost.'
openssl ca -batch -config root-ca/openssl.conf -keyfile root-ca/private/ca.key -cert root-ca/certs/ca.crt -extensions v3_req -notext -md sha256 -in middle/certs/intermediate.csr -out middle/certs/intermediate.crt

mkdir 出力

I in `seq 1 3` の場合;
 openssl req -new -keyout out/$I.key -out out/$I.request -days 365 -nodes -subj "/CN=$I.example.com" -newkey rsa:2048
 openssl ca -batch -config root-ca/openssl.conf -keyfile 中間/private/intermediate.key -cert 中間/certs/intermediate.crt -out out/$I.crt -infiles out/$I.request
終わり

サーバ

nginx の設定

ワーカープロセス 1;

イベント {
  ワーカー接続 1024;
}

ストリーム{
  アップストリームバックエンド{
    サーバー 127.0.0.1:8080;
  }

  サーバー{
    8888 ssl を聴く;
    proxy_pass バックエンド;
    ssl_certificate 中間.crt;
    ssl_certificate_key 中間キー;
    ssl_verify_depth 2;
    ssl_client_certificate ルート.crt;
    ssl_verify_client オプション_no_ca;
  }
}

クライアント

カール\
 -私 \
 -vv \
 -x https://localhost:8888/ \
 --proxy-cert client1.crt \
 --proxy-key client1.key \
 --proxy-cacert ca.crt \
 https://www.baidu.com/

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

以下もご興味があるかもしれません:
  • CentOS 7.3 で Nginx 仮想ホストを設定する方法
  • Django uwsgi Nginx の実稼働環境への詳細な展開
  • PHP-FPMとNginx間の通信メカニズムの詳細な説明
  • Nginx リバース プロキシを使用してクロスドメイン問題を解決する方法の詳細な説明
  • シェルスクリプト nginx 自動化スクリプト
  • DockerでNginxサーバーを作成する方法
  • dockerでnginxを実行するときにdaemon offが使用される理由についての簡単な説明
  • Dockerでnginxを実行し、ローカルディレクトリをイメージにマウントする方法
  • Docker で nginx の https を設定する方法
  • nginx プロキシ サーバーで双方向証明書検証を構成する方法

<<:  jQueryは、マウスをドラッグしてdivの位置とサイズを変更する方法を実装しています。

>>:  lnmp を使用して MySQL データベースのルート パスワードをリセットする 2 つの方法

推薦する

より人気がありクリエイティブなダーク背景のウェブデザインの例

暗い背景スタイルのページ デザインは非常に人気があり、シックでエレガント、そして非常にクリエイティブ...

Vue 組み込みコンポーネントのキープアライブでの LRU アルゴリズムの使用

目次Vue の keep-alive 組み込みコンポーネントの使用でもこのアルゴリズムが使用されます...

フォームファイル選択ボックスのスタイルをカスタマイズする例

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

div が隠しテキストを超え、div 部分の向こうの CSS コードを隠します

隠れる前に:隠れた後: CS: ...コードをコピーコードは次のとおりです。オーバーフロー:非表示;...

MYSQL の 10 の典型的な最適化ケースとシナリオ

目次1. SQL最適化の一般的な手順1. SQL実行計画の分析を説明する2. プロフィール分析を表示...

Node.js とブラウザのグローバル オブジェクトの違いの概要

Node.js では、.js ファイルは完全なスコープ (モジュール) です。したがって、var に...

Vue フォーム入力バインディング v-model

目次1.vモデル2. プロパティとイベントのバインディング3. フォーム要素のバインディング3.1 ...

grpc のリバース プロキシとして nginx を使用する場合の落とし穴の概要

背景ご存知のとおり、nginx は高性能な Web サーバーであり、負荷分散やリバース プロキシによ...

TypeScript ジェネリックを簡単に説明する方法

目次概要ジェネリック医薬品とはビルドシステムジェネリック医薬品の一般的な理解ジェネリッククラスジェネ...

Linux で Ceph 分散ソフトウェアをインストールして使用する方法に関するチュートリアル

目次序文1. 基本環境1. サービス配信2. ネットワーク構成(全ノード) 3. SSHパスワードフ...

nginx ip ブラックリストの動的禁止の例

ウェブサイトが悪意を持ってリクエストされた場合、IP アドレスをブラックリストに登録することは重要な...

IIS サーバーから apk ファイルをダウンロードする際の 404 エラーの解決策

最近、IIS をサーバーとして使用すると、apk ファイルがサーバーにアップロードされましたが、ダウ...

デザイン理論:人間中心のデザインコンセプト

<br />思想が東西に分かれていた時代、東洋の叡智を代表するものの一つとして「禅」は多...

Vueプロジェクトの最適化とパッケージ化の詳細な説明

目次序文1. ルーティングの遅延読み込み1. ルートの遅延読み込みが必要なのはなぜですか? 2. ル...

Linux でコマンドまたはプロセスの実行時間を調べる方法

Unix ライクなシステムでは、コマンドまたはプロセスの実行がいつ開始されたか、またプロセスがどのく...