MTLの使用
MTLの使用
サーバが証明書によって認証されるのは一般的です、しかし、この場合、クライアントも1を持ちます.MTLを使用すると、クライアントが誰であるかを確認できます.
MTLS means "mutual TLS authentication" or "two-way TLS authentication".
シナリオは:クライアント(AIM)MTLを使用してサーバーにアクセスする.
以下の図は、サーバーとクライアントの証明書の作成方法を示しています.
CA(認証局)は信頼できるルート証明書で証明書に署名する第三者です.しかし、2つの党の1つに属しているCAを使うのは、一般的です.
また、Amyが1つのCAを使用し、Bobが別のものを選択することも可能である(後述).
サーバー証明書を作成する手順は、クライアント証明書と同じです.唯一の違いは、証明書対象で使用される共通名です.
MTLS means "mutual TLS authentication" or "two-way TLS authentication".
自己署名根CA . 509証明書の作成
openssl req \
-new \
-x509 \
-nodes \
-days 365 \
-subj '/CN=my-ca' \
-keyout ca.key \
-out ca.crt
2 .[ BOB , server side ]サーバのキーを作成する
openssl genrsa -out bob_server.key 2048
3 .[ BOB , Server Side ]サーバの証明書を要求する
対象の一般名は、クライアントによって使用されるサーバー名を反映します.For
テストの目的は、単に
srv.bob.com
と仮定します.openssl req \
-new \
-key bob_server.key \
-subj '/CN=localhost' \
-out bob_server.csr
このステップで生成された証明書署名要求(CSRファイル)は、CA証明書.
4. [CA, on behalf of Bob] Using the CSR, the CA creates the signed server certificate:
openssl x509 \
-req \
-in bob_server.csr \
-CA ca.crt \
-CAkey ca.key \
-CAcreateserial \
-days 365 \
-out bob_server.crt
証明書(CRTファイル)はボブに送られます.5 . [エイミー、クライアント側]クライアントのキーを作成する
openssl genrsa -out amy_client.key 2048
6 . [エイミー,クライアント側]サーバの証明書を要求する
openssl req \
-new \
-key amy_client.key \
-subj '/CN=amy-client' \
-out amy_client.csr
このステップで生成された証明書署名要求(CSRファイル)は、CA証明書.
7 . [ ACEの代わりにCA ] CSRを使用して、CAは署名されたクライアント証明書を作成します。
openssl x509 \
-req \
-in amy_client.csr \
-CA ca.crt \
-CAkey ca.key \
-CAcreateserial \
-days 365 \
-out amy_client.crt
証明書(CRTファイル)はエイミーに送られます.テスト
Start Bob's server:
ノードアプリケーションを起動する
node app_bob.js
より安全なTLS V 1を持つクライアントだけを許可したいなら.3
node --tls-min-v1.3 app_bob.js
エイミーのクライアントを実行する
curl \
--cacert ca.crt \
--key amy_client.key \
--cert amy_client.crt \
https://localhost:3000
異なるCASの使用
エイミーとボブが異なったCASを使用しているなら、彼らは互いのルート証明書を知っている必要があります.
エイミーとボブのCASがlocalhost
とamy_ca.crt
の証明書を持っていると仮定します.
したがって、ボブはAmyによって使用される証明書をロードしなければなりません:
const options = {
ca: fs.readFileSync('amy_ca.crt'),
そしてエイミーのクライアントはボブによって使用される証明書を知る必要があります.
curl \
--cacert bob_ca.crt \
これらはこのシナリオを作成する完全な手順です.
ボブ(サーバ側):
openssl req \
-new \
-x509 \
-nodes \
-days 365 \
-subj '/CN=bob-ca' \
-keyout bob_ca.key \
-out bob_ca.crt
openssl genrsa -out bob_server.key 2048
openssl req \
-new \
-key bob_server.key \
-subj '/CN=localhost' \
-out bob_server.csr
openssl x509 \
-req \
-in bob_server.csr \
-CA bob_ca.crt \
-CAkey bob_ca.key \
-CAcreateserial \
-days 365 \
-out bob_server.crt
エイミー(クライアント側):
openssl req \
-new \
-x509 \
-nodes \
-days 365 \
-subj '/CN=amy-ca' \
-keyout amy_ca.key \
-out amy_ca.crt
openssl genrsa -out amy_client.key 2048
openssl req \
-new \
-key amy_client.key \
-subj '/CN=amy-client' \
-out amy_client.csr
openssl x509 \
-req \
-in amy_client.csr \
-CA amy_ca.crt \
-CAkey amy_ca.key \
-CAcreateserial \
-days 365 \
-out amy_client.crt
リファレンス
https://github.com/adzubla/mtls-test
Reference
この問題について(MTLの使用), 我々は、より多くの情報をここで見つけました
https://dev.to/adzubla/using-mtls-5711
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
node app_bob.js
node --tls-min-v1.3 app_bob.js
curl \
--cacert ca.crt \
--key amy_client.key \
--cert amy_client.crt \
https://localhost:3000
エイミーとボブが異なったCASを使用しているなら、彼らは互いのルート証明書を知っている必要があります.
エイミーとボブのCASが
localhost
とamy_ca.crt
の証明書を持っていると仮定します.したがって、ボブはAmyによって使用される証明書をロードしなければなりません:
const options = {
ca: fs.readFileSync('amy_ca.crt'),
そしてエイミーのクライアントはボブによって使用される証明書を知る必要があります.curl \
--cacert bob_ca.crt \
これらはこのシナリオを作成する完全な手順です.
ボブ(サーバ側):
openssl req \
-new \
-x509 \
-nodes \
-days 365 \
-subj '/CN=bob-ca' \
-keyout bob_ca.key \
-out bob_ca.crt
openssl genrsa -out bob_server.key 2048
openssl req \
-new \
-key bob_server.key \
-subj '/CN=localhost' \
-out bob_server.csr
openssl x509 \
-req \
-in bob_server.csr \
-CA bob_ca.crt \
-CAkey bob_ca.key \
-CAcreateserial \
-days 365 \
-out bob_server.crt
エイミー(クライアント側):openssl req \
-new \
-x509 \
-nodes \
-days 365 \
-subj '/CN=amy-ca' \
-keyout amy_ca.key \
-out amy_ca.crt
openssl genrsa -out amy_client.key 2048
openssl req \
-new \
-key amy_client.key \
-subj '/CN=amy-client' \
-out amy_client.csr
openssl x509 \
-req \
-in amy_client.csr \
-CA amy_ca.crt \
-CAkey amy_ca.key \
-CAcreateserial \
-days 365 \
-out amy_client.crt
リファレンス
https://github.com/adzubla/mtls-test
Reference
この問題について(MTLの使用), 我々は、より多くの情報をここで見つけました
https://dev.to/adzubla/using-mtls-5711
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(MTLの使用), 我々は、より多くの情報をここで見つけました https://dev.to/adzubla/using-mtls-5711テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol