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

推薦する

ビジュアルデザイナーの成長の3つの段階のまとめ

この本「グラフィックデザイナーとして成長する」は多くの人が読んでおり、私もオリジナルの PDF 版を...

OneProxy に基づいて MySQL の読み取り/書き込み分離と負荷分散を実装する

導入パート1: 冒頭に書いたOneProxy は、民間ソフトウェアによって完全に独立して開発された分...

Vue3 ミックスインの使い方

目次1. mixin の使い方は? 2. ミックスイン使用時の注意2.1. ミックスイン オブジェク...

MySql 8.0.16 バージョンのインストールでは、「UTF8B3」ではなく「UTF8B4」が使用されるように求められます。

MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...

高品質なコードを書く Web フロントエンド開発実践書の抜粋

(P4) Web 標準は一連の標準で構成されています。中心となる概念は、Web ページの構造、スタイ...

DHTML オブジェクト (さまざまな HTML オブジェクトの共通プロパティ)

!DOCTYPE HTML ドキュメントが準拠するドキュメント型定義 (DTD) を指定します。 ...

CentOS 6.2 に MySQL 5.7.28 をインストールするチュートリアル (mysql ノート)

1. 環境整備1.MySQLインストールパス: /usr/local 2. CentOS 6.2 ...

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

最初の方法: Junge のワンクリック スクリプトを使用して、LNMP 環境で MYSQL データ...

ES6の新機能に関する最もよく使われる知識ポイントのまとめ

目次1. キーワード2. 脱構築3. 文字列4. 正規化5. 配列6. 機能7. オブジェクト8.シ...

MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法

MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法ウェブサイト開発...

Linux ファイル/ディレクトリの権限と所有権の管理

1. ファイルの権限と所有権の概要1. アクセス権Read r: ファイルの内容を表示し、ディレクト...

MySQLのスレッド実行の急増とクエリの遅延の問題を解決する

目次背景問題の説明原因分析CPUクエリが遅い接続数分析する拡大する総括する背景新年を迎える前は、一年...

CSS で要素を垂直方向に中央揃えする 7 つの方法

【1】中央の要素の幅と高さを知る絶対値 + 負のマージンコードの実装 .wrapBox5{ 幅: 3...

リアルタイムクロックを実装するネイティブJS

ネイティブ JS で実装したリアルタイム クロック エフェクトを共有します。エフェクトは以下のとおり...

珍しいけれど役に立つJSテクニックをいくつか紹介します

序文プログラミング言語には通常、さまざまな隠されたトリックが含まれており、これらのトリックを上手に使...