-1

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 CAInt CAverify

s_clientおよび機能については知っていs_serverますが、適切なソリューションではなく、必要なもののハックのようです。

私の質問はこれだと思います:

  • opensslmTLS ルールに従って CA チェーンに対して証明書を検証するために使用することは可能ですか?
  • そして、それが不可能な場合、ゼロから書くことに頼らずにそれを行う方法は何でしょうか?
4

1 に答える 1