JavaSSL一开始是有效的,但大约一天后:PKIX握手异常

JavaSSL一开始是有效的,但大约一天后:PKIX握手异常,java,wordpress,ssl,nginx,Java,Wordpress,Ssl,Nginx,我正在尝试从Java的HTTPS web服务获取内容: URL url = new URL(siteUrl); URLConnection conn = url.openConnection(); conn.setDoOutput(true); conn.setReadTimeout(5000); BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line;

我正在尝试从Java的HTTPS web服务获取内容:

URL url = new URL(siteUrl);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setReadTimeout(5000);

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
StringBuffer buffer = new StringBuffer();
while ((line = rd.readLine()) != null) {
    buffer.append(line);
}
String res = buffer.toString();
它工作得很好。但在我的应用程序运行了一段时间后(大约18小时后),我遇到了SSL异常:

javax.net.ssl.SSLHandshakeException:
    sun.security.validator.ValidatorException: PKIX path building failed:
    sun.security.provider.certpath.SunCertPathBuilderException:
    unable to find valid certification path to requested target
我知道我的“jre/lib/security/cacerts”文件应该包含受信任的证书,并且我从web服务添加了证书。这没用。还是同一个问题。重新启动java应用程序大约有18个小时的帮助,但随后PKIX错误再次显示

web服务由WordPress处理,它前面是一个启用了缓存的nginx

每个人都建议在cacerts文件中包含正确的证书。 但奇怪的是,为什么只在一段时间后抛出错误,为什么不在第一次调用时抛出错误


任何想法都非常受欢迎。

请尝试使用
-Djavax.net.debug=ssl打开,以了解有关正在进行的操作的更多信息。你也许能从握手中发现一些不同的东西。最后我找到了我问题的答案。它涉及SNI: