我正在尝试在java 7中使用HttpsURLConnection(在Windows 7上)连接到远程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: 无法找到所请求目标的有效证书路径
任何人都有任何提示吗?
答案 0 :(得分:2)
最有可能的是,Java没有使用导入证书的密钥库。要告诉Java在哪里可以找到密钥库,请使用以下命令行参数:
java -Djavax.net.ssl.trustStore=<path to keystore file> -Djavax.net.ssl.trustStorePassword=<keystore password>
Eclipse和Gradle可能具有特定设置以将密钥库位置转发到Java。
另见: