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におけるキーの役割の詳細な説明

推薦する

Docker のインストールと構成コマンドのコード例

Dockerのインストール依存パッケージをインストールする sudo yum install -y ...

Linux で lvm 論理ボリューム パーティションのサイズを調整するチュートリアル (xfs や ext4 などのさまざまなファイル システム用)

序文システムをインストールしたときに、パーティション領域を適切に割り当てませんでした。その後のメンテ...

ウェブカラーのコントラストと調和のテクニックの共有

色のコントラストと調和対照的な状況では、色の相互作用は単一の色によって与えられる感覚とは異なります。...

Vueキャッシュ機能の使い方

目次vue2のキャッシュ機能Vue キャッシュ関数の変換最適化要約するvue2のキャッシュ機能vue...

js は axios 制限リクエスト キューを実装します

目次背景は次のとおりです。何が起こるでしょうか?背景は次のとおりです。実際の開発では、ネットワークの...

HTML の順序なしリストタグと順序付きリストタグの使用例

1. 上部と下部のリストタグ: <dl>..</dl>:上dt下層dd: カ...

Linux 最速のテキスト検索ツール ripgrep (grep の最良の代替)

序文テキスト検索ツールといえば、Linux で最も便利でよく使われるツールの 1 つである grep...

MySQL 8.0 の非表示列に対する基本操作

目次01 非表示の列を作成する02 非表示の列に対する基本操作03 非表示の列メタデータ04 主キー...

Ubuntu 18.04 (コミュニティ エディション) に Docker CE をインストールする方法

古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...

Tomcat の静的ページ (html) で中国語の文字化けが発生する問題の究極の解決策

tomcatでは、jspは文字化けしませんが、htmlの中国語は文字化けします理由はいくつかあります...

CSS でホバー ドロップダウン メニューを実装する方法

いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...

HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

HTMLでCSSを定義するには、埋め込み、リンク、インラインの3つの方法が一般的に使用されます。 1...

Linuxはlsofコマンドを使用してファイルのオープンステータスを確認します

序文Linux では「すべてがファイル」であることは誰もが知っているので、ファイルのオープン状態を確...

VMware10 での CentOS 7 のインストールと設定のチュートリアル

Ubuntu が今日のデスクトップ ユーザーの間で最も人気のある Linux オペレーティング シス...

進捗バー効果を実現するJavaScript

この記事では、プログレスバー効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...