MyEclipse没有读取导入的证书

时间:2015-08-10 12:46:44

标签: java web-services ssl ssl-certificate myeclipse

我正在呼叫一个拥有自签名证书的网络服务。

我已使用以下命令将证书添加到JAVA_HOME

"%JAVA_HOME%/bin/keytool" -import -alias emoney -file C:\Users\l.young\certificates\srv03.wpay.co.crt -keystore "C:\Program Files\Java\jdk1.8.0_45\jre\lib\security\cacerts"

在此之后,我将以下两行添加到我的myeclipse.ini文件

-Djavax.net.ssl.trustStore=C:\Program Files\Java\jdk1.8.0_45\jre\lib\security\cacerts
-Djavax.net.ssl.trustStorePassword=changeit

设置我在MyEclipse中的tomcat配置来运行%JAVA_HOME%下的java而不是AppData

完成所有这些后,我仍然得到以下异常

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

我的配置错过了什么?为什么这仍然失败?

编辑 - 问题 别名有所不同吗?

编辑2 使用SOAPUI进行测试并且它可以工作 - 没有证书问题。有任何建议如何让它在MyEclipse中运行?

2 个答案:

答案 0 :(得分:1)

其中一个原因可能是Eclipse正在使用不同的JRE,请尝试:

"%JAVA_HOME%/bin/keytool" -import -alias emoney -file C:\Users\l.young\certificates\srv03.wpay.co.crt -keystore "%JAVA_HOME%\jdk1.8.0_45\jre\lib\security\cacerts"

编辑:根据评论中的讨论,最后的方法是忽略证书验证。请注意,这会让你在中间攻击中容易受到攻击。 将这两行添加到您的代码中以忽略证书验证:

SSLUtilities.trustAllHostnames();
SSLUtilities.trustAllHttpsCertificates();

Source

答案 1 :(得分:1)

为什么你认为在运行Tomcat时会使用myeclipse.ini中设置的属性?尝试在Tomcat的运行配置中设置它们。 Tomcat在单独的JVM中运行。您还可以在运行配置中指定要用于Tomcat的JRE。