XFCCヘッダーで提供されたクライアント TLS 証明書を使用してリクエストを受信する Node.js サーバーがあります。
アプリケーション レベルで相互 TLS を実行したいと考えています。つまり、サーバーの CA トラストストアに対してクライアント TLS 証明書を検証します。これはすべて、Web プロキシ構成に依存するのではなく、アプリケーション コードで行われます。
私は NPM のpem依存関係を使用しています。これは基本的に JS ラッパーの束ですopenssl
。特に、mTLS に類似するために必要な検証は次のverify
方法です。
openssl verify -CAfile /my/server/ca-chain.crt client-chain.crt
これは、最も単純なケースで機能します。
- ca-chain.crt:
Root CA
->Int 1 CA
- client-chain.crt
Root CA
->Int 1 CA
->Leaf 1
ただし、Int CA が異なる、より複雑なケースでは失敗します。
- ca-chain.crt:
Root CA
->Int 1 CA
- client-chain.crt
Root CA
->Int 2 CA
->Leaf 2
以下を使用します。
openssl verify -CAfile /my/server/ca-chain.crt client-chain.crt
error 20 at 0 depth lookup:unable to get local issuer certificate
私が理解している限り、すべての証明書が有効であり、 が異なるにもかかわらず同じ につながる限り、mTLS は正常に実行されます。Root CA
Int CA
verify
s_client
および機能については知っていs_server
ますが、適切なソリューションではなく、必要なもののハックのようです。
私の質問はこれだと思います:
openssl
mTLS ルールに従って CA チェーンに対して証明書を検証するために使用することは可能ですか?- そして、それが不可能な場合、ゼロから書くことに頼らずにそれを行う方法は何でしょうか?