我正在尝试使用java 7中的HttpsURLConnection (在windows 7上)连接到远程web服务器并发送post请求。除了不信任证书(它是自签名的)之外,一切似乎都正常。
我已经通过chrome导出了证书,然后将证书导入密钥存储库,如下所示:
keytool -import -file mysslcertificate.cer如果我运行keytool -list,证书就在那里。
在导入证书之后,当我尝试运行它(使用gradle或eclipse)时,我得到了以下异常:
sun.security.provider.certpath.SunCertPathBuilderException::javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX路径构建失败:javax.net.ssl.SSLHandshakeException无法找到被请求目标的有效认证路径 导致: sun.security.provider.certpath.SunCertPathBuilderException::PKIX路径生成失败:sun.security.validator.ValidatorException无法找到被请求目标的有效证书路径 导致: sun.security.provider.certpath.SunCertPathBuilderException:无法找到被请求目标的有效证书路径
有人有什么建议吗?
发布于 2013-03-22 10:29:25
很可能,Java没有使用您导入证书的keystore。要告诉Java在哪里找到密钥存储库,请使用以下命令行参数:
java -Djavax.net.ssl.trustStore=<path to keystore file> -Djavax.net.ssl.trustStorePassword=<keystore password>
Eclipse和Gradle可能具有将密钥存储位置转发给Java的特定设置。
另请参阅:
https://stackoverflow.com/questions/15567631
复制相似问题