当我在 Java 7 中创建 SSLServerSocket 时,服务器正确使用了我的服务器证书和密钥。该证书是由 ca 的 sub ca 颁发的。因此,从根证书到服务器证书的完整链有四个证书。完整的链存在于密钥库/信任库中。
但是,当客户端连接服务器时,始终只发送服务器证书本身。这也适用于基于 Java 的 Web 服务器,例如 Jetty。
因为大多数客户端只安装了根 ca 证书,而没有安装两个子 ca 证书,这是一个大问题。
如何强制 Java 在 SSL/TLS 握手中发送完整的证书链?