在 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 的自签名证书的主要内容,如果未能解决你的问题,请参考以下文章
带有 Qt/QML 应用程序的 Windows 7 中的自定义触摸行为
如何在 Windows (7) 上更改 Java 运行时版本?
TextBox.TextChanged 事件在 Windows Phone 7 模拟器上触发两次