tomcat服务器上的javax.net.ssl.SSLHandshakeException

时间:2014-03-15 10:00:05

标签: java java-ee tomcat ssl https

我希望使用 https 协议获取网址的内容。问题是,当从 tomcat服务器执行此代码时,我得到 HandshakeException

url = new URL("https://donneespubliques.meteofrance.fr/donnees_libres/Txt/Nivo/nivo.20140309.csv");    
Scanner s = new Scanner(url.openStream());

我尝试查看其他stackoverflow问题(How can I use different certificates on specific connections?SSL Socket connection),似乎我需要定义KeyStore

我不知道该怎么做。

tomcat服务器中的完整错误是

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

默认的java信任库($ JAVA_HOME / lib / security / cacerts)包含donneespubliques.meteofrance.fr的CA证书。很可能tomcat使用的是另一个。

您应该可以通过更新tomcat启动脚本来强制它来包含castore位置。像这样:

-Djavax.net.ssl.trustStore="C:\Program Files\Java\jre7\lib\security\cacerts" 
-Djavax.net.ssl.trustStorePassword=changeit