0

現在、サーバーとクライアントで相互 SSL を有効にする際に問題があります。

サーバー側では、ClientAuth を有効にして tomcat を構成し、クライアントの証明書をトラストストアに構成します。

したがって、ssl ハンドシェイク中に、サーバーの証明書要求を確認できます。

 [java] *** CertificateRequest
   [java] Cert Types: RSA, DSS, ECDSA
   [java] Supported Signature Algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA256withDSA, SHA224withECDSA, SHA224withRSA, SHA224withDSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA
   [java] Cert Authorities:
   [java] <CN=https-test.domain.com, O=Domain.com, L= XX, ST=XX, C=US>

サーバーがサブジェクト識別名で証明書を要求していることがわかります。ただし、クライアント側では、クライアントがキーをフィルター処理するときに、DN を発行者 DN として扱います。コードはこちらを参照してください: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6- b14/sun/security/ssl/SunX509KeyManagerImpl.java#378

したがって、これは問題につながります:

[java] Warning: no suitable certificate found - continuing without client authentication
   [java] *** Certificate chain
   [java] <Empty>
   [java] ***

そのため、握手は失敗しました。

証明書情報の一部を次に示します。

Issuer: DC=com, DC=domain, CN=Domain. com Security
Subject: C=US, ST=XX, L=XX, O=Domain.com, CN=https-test.domain.com

ここでの私の質問は、なぜサーバーはサブジェクト DN でクライアント証明書を要求するのに、クライアントは IssuerDN でフィルタリングするのですか?

それらが正常に接続できるようにするには、クライアントの親証明書を使用してサーバーのトラストストアを構成する必要があります。サブジェクト DN は発行者と同じになります: DC=com、DC=ドメイン、CN=ドメイン。com セキュリティ

これに関するアイデアはありますか?これについては誤解があるかもしれませんが、それでも理由を知りたいです。

4

0 に答える 0