小编典典

Java SSLSocket:如何发送完整的服务器证书链?

java

当我在Java
7中创建SSLServerSocket时,服务器正确使用了我的服务器证书和密钥。该证书是由ca的子ca颁发的。因此,从根证书到服务器证书的完整链有四个证书。完整的链位于密钥库/信任库中。

但是,当客户端连接服务器时,服务器始终只会自己发送服务器证书。这也适用于基于Java的Web服务器,例如Jetty。

因为大多数客户端仅安装了根ca证书,而没有安装两个子ca证书,所以这是一个大问题。

如何强制Java在SSL / TLS握手中发送完整的证书链?


阅读 342

收藏
2020-11-26

共1个答案

小编典典

密钥库中的密钥条目不仅针对单个证书,而且还针对证书链(请参阅KeyStore.setKeyEntry,使用Certificate[] chain参数)。

如果要使用特定的链,则需要在具有证书及其私钥的条目中将其设置为链。中间证书是否也位于相同的密钥库中,位于不同的条目中并不重要。

这与让客户发送完整的客户证书链非常相似。从服务器的角度来看,相同的密钥库配置步骤也应该起作用,如本问题所述

2020-11-26