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

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

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

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

中間証明書のドメイン名は 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 をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • docker で nginx+php+mysql を設定する方法
  • 無効な Nginx クロスドメイン設定 Access-Control-Allow-Origin の解決策
  • Nginx に React プロジェクトをデプロイする方法の例
  • nginx.conf ファイルの構文強調表示とフォーマット設定には nginx.vim ツールを使用します。
  • nginx 設定チュートリアルにおける add_header の落とし穴の詳細な説明
  • Nginx プロキシ使用時にヘッダーに「_」が含まれることで情報が失われる問題の解決方法
  • シェルスクリプト nginx 自動化スクリプト
  • DockerでNginxサーバーを作成する方法
  • dockerでnginxを実行するときにdaemon offが使用される理由についての簡単な説明
  • nginx proxy_cache バッチキャッシュクリアスクリプトの紹介

<<:  WeChatアプレットはシンプルな計算機を実装する

>>:  Reactにおけるキーの役割の詳細な説明

推薦する

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

XHTML Web ページ チュートリアル

この記事は主に、初心者に XHTML の基本的な知識と、XHTML と HTML の違いを理解しても...

モバイル端末の適応に関する簡単な説明

序文フロントエンド コードの記述では、「互換性」という言葉から逃れることはできません。過去の PC ...

Tik Tok サブスクリプション ボタンのアニメーション効果を実現する CSS

少し前にTik Tokを見ていて、フォローするときのボタンアニメーションがとても美しいと思ったのと、...

MySQLでホワイトリストアクセスを設定する方法

MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...

Ubuntu16.04にclionをインストールするプロセス全体と手順の詳細な説明

CLion のプロセス全体を最初から説明します。CLion は、JetBrains がリリースした新...

MySQL の主キーとトランザクションの詳細な説明

目次1. MySQLの主キーとテーブルフィールドに関するコメント1. 主キーと自動増分2. テーブル...

Docker コンテナでネットワーク リクエストが遅くなる問題の解決策

Docker の使用中に、いくつかの問題が発見されました。npm install や bundle ...

よく使用される入力テキストボックスの内容は自動的に垂直方向に中央揃えされ、クリックするとデフォルトのプロンプトテキストは空になります。

3つの機能: 1. コンテンツの垂直方向の自動中央揃え2. デフォルトのプロンプトテキストは灰色で表...

js で継承を実装する 5 つの方法

コンストラクタの借用この手法の基本的な考え方は単純です。サブタイプ コンストラクター内からスーパータ...

Dockerイメージをパッケージ化し、リモートサーバーにプッシュしてk8sにデプロイする方法

目次1. Dockerファイル2. pom 構成3. イメージプッシュ4. k8s デプロイメント前...

Mysql の varchar 型に関する注意点

varchar の保存ルール4.0 未満のバージョンでは、varchar(20) は 20 バイトを...

Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...

初心者がHTMLタグを学ぶ(1)

初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...

Vueプロジェクトでよく使われる実践的なスキルのまとめ

目次序文1. マルチレベルのデータとイベントの配信には$attrsと$listenersを使用する2...