在 Windows 7 上信任 Java 7 的自签名证书

Posted

技术标签:

【中文标题】在 Windows 7 上信任 Java 7 的自签名证书【英文标题】:Trusting self signed certificate for java 7 on windows 7 【发布时间】:2013-03-12 03:35:26 【问题描述】:

我正在尝试使用 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

【讨论】:

阿尔姆索特对。我不得不改用 javax.net.ssl.trustStore / javax.net.ssl.trustStorePassword。

以上是关于在 Windows 7 上信任 Java 7 的自签名证书的主要内容,如果未能解决你的问题,请参考以下文章

Windows 7 开始菜单搜索的自定义源

带有 Qt/QML 应用程序的 Windows 7 中的自定义触摸行为

如何在 Windows (7) 上更改 Java 运行时版本?

TextBox.TextChanged 事件在 Windows Phone 7 模拟器上触发两次

新装windows 7 旗舰版(64位msdn原版),应该安装那些补丁?

建立Windows AD对Kerberos的单向信任(允许使用域账号登录Kerberos集群)