Java 7 で SSLServerSocket を作成すると、サーバーはサーバー証明書とキーを正しく使用します。証明書は、CA のサブ CA によって発行されました。したがって、ルート証明書からサーバー証明書までの完全なチェーンには 4 つの証明書があります。完全なチェーンはキーストア/トラストストアにあります。
ただし、クライアントが接続すると、サーバーは常にサーバー証明書自体のみを送信します。これは、Jetty などの Java ベースの Web サーバーにも当てはまります。
ほとんどのクライアントにはルート CA 証明書のみがインストールされており、2 つのサブ CA 証明書はインストールされていないため、これは大きな問題です。
Java に SSL/TLS ハンドシェイクで完全な証明書チェーンを送信させるにはどうすればよいですか?