javax.net.ssl.SSLHandshakeException 在一台机器上,但不是在另一台机器上

Posted

技术标签:

【中文标题】javax.net.ssl.SSLHandshakeException 在一台机器上,但不是在另一台机器上【英文标题】:javax.net.ssl.SSLHandshakeException in one machine, but not the other one 【发布时间】:2016-09-28 07:50:38 【问题描述】:

我有

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed

我已部署应用程序但在本地计算机上未收到此错误的远程计算机上出现异常。

我知道此错误与 SSL 证书过期有关。我已经下载了证书所有者的新证书,将其导入到我的远程机器的密钥库中,但仍然出现此错误。

在这种情况下,奇怪的是我没有在本地计算机上执行导入证书操作。

那么如何在一台机器上而不是在另一台机器上对证书进行验证呢?

【问题讨论】:

质疑显而易见:您是否检查以确保在出现此错误的机器上时间设置正确? 【参考方案1】:

最简单的方法是捕获抛出的CertPathValidatorException 并使用它的方法getCertPath() 来检索导致问题的CertPath 和证书。

您应该首先检查两台机器之间的证书是否不同。

如果无法捕获异常,请在调试模式下运行程序并在CertPathValidatorException 上添加断点。如果触发,请查看包含的证书并手动进行比较。

【讨论】:

很好的答案!我会尽快检查的。谢谢【参考方案2】:

您的客户端正在检查用于您的 ssl 连接的所有证书的到期日期,这表明该证书或其链中的一个证书已过期。也可能是您计算机(或服务器)上的日期也错误,导致证书似乎没有过期。

http://community.hpe.com/t5/Service-Manager-Service-Center/Urgent-Help-ValidatorException-PKIX-path-validation-failed-java/td-p/5937029

还要检查 ssl 链的任何证书是否真的过期。

【讨论】:

以上是关于javax.net.ssl.SSLHandshakeException 在一台机器上,但不是在另一台机器上的主要内容,如果未能解决你的问题,请参考以下文章