我正在尝试在java 7(在Windows 7上)使用HttpsURLConnection连接到远程Web服务器并发送一个发布请求 . 一切似乎都有效,除了它不信任证书(它是自签名的) .
我已通过chrome导出证书,然后将证书导入密钥库,并使用以下命令:
keytool -import -file mysslcertificate.cer
如果我运行 keytool -list
,证书就在那里 .
当我在导入证书后尝试运行它(使用gradle或eclipse)时,我得到以下异常:
javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径引起:sun.security.validator . ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径引起:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
有人有任何提示吗?
1 回答
最有可能的是,Java没有使用导入证书的密钥库 . 要告诉Java在哪里可以找到密钥库,请使用以下命令行参数:
java -Djavax.net.ssl.trustStore=<path to keystore file> -Djavax.net.ssl.trustStorePassword=<keystore password>
Eclipse和Gradle可能具有特定设置以将密钥库位置转发到Java .
也可以看看:
keystore configuration in Java
keystore configuration in Eclipse