2017-03-21 37 views
1

HTTPSを使用して別のサービスと通信するマイクロサービスを作成しています。 Javaクライアントの実装では、truststoreからルート証明書を読み取り、それを介して受信証明書を検証します。Javaクライアントを使用したSSL証明書の検証

私の質問は - デフォルトでは第2レベルの証明書だけがルート証明書を使用して検証されるか、または順番にすべてのチェーン証明書も検証されますか?

私はokhttpを使用しています。私の前提は、すべてのJavaクライアントが同じように動作する必要があるということです。ここに主観があれば教えてください。ありがとう。

答えて

2

あなたはトラストストアにルート証明書が含まれている場合、チェーン全体がハンドシェーク時にSSLサーバ

を検証されますが、ルートにリーフ証明書からクライアントへの証明書チェーンを送信します。それは、証明書の発行者または証明書自体

+0

のは、見てみましょうを見つけるまで、Javaクライアントのデフォルトのトラストマネージャは、トラストストアで探して証明書チェーンを検証するルート証明書が含まれていてもよいが、通常、それは

ではありませんこの場合:証明書チェーンはroot - > cert1 - > cert2 - > cert3です。ハンドシェークが始まると、サーバーはcert1 - > cert2 - > cert3を送信します。したがって、クライアントはrootを使用してcert1のみを検証し、すべてのチェーンが有効であるという結論に至りますか、それともcert2とcert3も検証しますか? –

+0

チェーンは、逆cert3 - > cert2 - > cert1 - >ルートで送信され、検証されます。クライアントは、ルートが見つかるまでcert3、cert2、およびcert1を検証します – pedrofb

+0

したがって、サーバーから来る方法であるcert2を使用して署名cert3が検証されます。だから、それはどんな価値があるのでしょうか?また、Javaの実装では、所有者のドメイン、日付などの詳細が検証されますか?そして、すべてのjava httpクライアントは同様の方法で動作しますか? –

関連する問題