1

オプションで(クライアントに応じて)クライアント側の証明書を必要とするサーバーを作成しています。証明書を提供するクライアントと証明書を提供しないクライアントは、同じサーバーポートを介してサーバーに接続する必要があります。

SSLContextで両方のタイプのクライアントをサポートできるように、「setWantClientAuth(true)」と呼びます。クライアントSSLSessionがネゴシエートされた後、クライアント証明書チェーンが利用可能な場合はそれを取得します。クライアントと証明書のチェーンを取得する唯一の方法は、「sslSession.getPeerCertificates()」を使用することです。これは、クライアントが証明書を提供しなかった場合、残念ながら例外をスローします。

getPeerCertificatesを呼び出す前にクライアント証明書が提供されたかどうかを判断して、証明書を提供しないクライアントの例外を回避できるようにする他の方法はありますか?

4

1 に答える 1

2

この場合に例外をスローすることは、次のAPIコントラクトの一部にすぎませんgetPeerCertificate()

スロー:SSLPeerUnverifiedException-ピアのIDが検証されていない場合

クライアント認証の欠如を処理する従来の方法は、単にこの例外をキャッチすることです。たとえば、ApacheTomcatのJSSESupport実装を見ることができます。

Throwableこのバージョンではキャッチしますが、キャッチしたいだけかもしれませんSSLPeerUnverifiedException。)

于 2012-05-04T17:21:12.863 に答える