私は現在、Java で SSL クライアントに取り組んでおり、クライアント認証を必要とするサードパーティ サーバーとの https 接続を確立する必要があります。サーバー担当者は、クライアント証明書とサーバー証明書の両方に署名するために使用される信頼できるルート CA 証明書を提供してくれました。この証明書を自分の側のトラストストアに入れました。サーバー関係者は、クライアント証明書を検証するために使用するこのルート CA 証明書も持っています。
サーバーとの SSL 接続を確立しようとすると、サーバーが証明書を送信するとハンドシェイクが正常に行われ、クライアントがそれを正常に検証できることがわかります。ただし、「Certificate Request」メッセージの一部として、サーバーは「Cert Authorities」パラメーターでルート CA 証明書を返しません。このため、クライアントはクライアント証明書をサーバーに送り返さず、ハンドシェイクは失敗します。
WSDL スタブを使用して標準の Java コードを作成しています。wsdl2Java ant タスクによって生成された wsdl スタブを利用しています。
だから私の質問は: サーバーがクライアント認証を要求するときに空の「証明書機関」リストを送信する場合でも、Java クライアントに事前設定されたクライアント証明書をサーバーに送信させることはできますか? (TLS RFCを読んだところ、サーバーがこのような空のリストを送信することは合法であることがわかりました。この場合、クライアントは適切と思われる証明書を返送する可能性があります。まったく同じ動作を達成しようとしています)。