【发布时间】:2018-04-19 00:44:56
【问题描述】:
在客户端-服务器 ssl 握手中,我的服务器在服务器问候消息中将证书链发送回客户端。但我想了解该特定证书链是如何被选中的。
我的密钥库有 5 个链
chain1>
privatekey (expired at let's say date1) --
intermediate or server cert (valid) --
root (valid)
chain2>
privatekey cert (valid for 6 more months)--
intermediate or server cert (valid)--
root (valid)
chain3>
privatekey cert (expired at lets say date2) --
intermediate or server cert (valid)--
root (valid)
chain4>
privatekey cert (valid for 1 year) --
intermediate or server cert (valid)--
root (valid)
chain5>
privatekey cert (expired at lets say date3) --
intermediate or server cert (valid)--
root (valid)
现在,每当客户端尝试连接到我的服务器(用于 Web 服务)时,都会获得以下异常并且客户端无法连接
sun.security.validator.ValidatorException:PKIX 路径验证 失败:java.security.cert.CertPathValidatorException:时间戳检查 失败的。 .................. 更多行.. 由 java.security.cert.CertPathValidatorException:时间戳检查 失败........ 更多行.. 由 java.security.cert.CertPathValidatorException: NotAfter : date1
尝试重新连接,但这次 date2 再次出现同样的错误。现在,即使我的密钥库中有过期的证书,这种情况也不会发生。
任何人都可以解释如何在服务器问候消息中选择证书链吗?我尝试了很多研究,但无法得到具体的东西
【问题讨论】:
-
如果不知道如何设置 ServerSocket,就无法回答。
-
@Lothar : ServerSocket、X509TrustManager 或任何其他高级工厂未定制。
-
X509TrustManagers 用于检查对端的证书,与握手时选择自己的证书无关。同样,请提供您设置 ServerSocket 的来源
标签: java ssl ssl-certificate handshake sslhandshakeexception