基于各种Web输入,我已按照以下步骤将证书添加到本地jdk密钥库中:
通过从Linux主机单击以下命令来下载证书:openssl s_client -connect MyService:443 -showcerts
在------ BEGIN CERTIFICATE --------和-------- END CERTIFICATE ---------之间复制内容,并将其保存为C: Java jre lib security cer1.cer
键入:C: Java jre bin> keytool -keystore C: Java jre lib security cacerts -importcert -alias cer1-文件C: Java jre lib security cer1.cer
这显示一条消息,表明证书已成功添加。我通过使用listtool的keytool验证了
然后,我重新启动计算机,并尝试再次运行我的Java程序,但仍然不断出错:
" sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到到请求目标的有效证书路径"
JDK使用:1.8.0_31,Windows 7
请帮忙!
如果您使用的是JDK,将其添加到JRE信任库将无济于事。 您需要将其添加到JDK内的JRE的信任库中。
嗨,EJP,谢谢您对此进行调查。是的,我将此添加到了JDK内的JRE中(我再次检查了我的类路径是否指向我的JDK),但是错误仍然存??在
C:\Java\jre是已安装的JRE,而不是JDK内部的JRE。
实际上,文件夹java仅是JDK,我之前将其命名为java。它包含自述文件,该文件也确认其JDK。它也有自己的bin,jre,lib等文件夹
我尝试过的一些尝试和尝试似乎奏效了:我没有更新jdk / jre / lib / security的证书,而是更新了jdk / lib / security(没有jre)及其现在的工作!!但是,非常感谢EJP,您发布的答案使我的思考过程正常了,我试图从书本角度之外看待事情。感谢您的时间和精力!
我们有两种设置可以使它起作用:
在一台计算机上,安装JDk的人员对用于安装Java的文件夹结构进行了一些更改,并具有以下结构:Java / jre / lib / security以及Java / lib / security。 我们将证书添加到Java / lib / security的证书中,它开始起作用
在用户执行默认istallation的第二台计算机上,存在以下文件夹结构:Java / jre_1.8 / lib / security和Java / jdk_1.8 / jre / lib / security。 我们在Java / jre_1.8 / lib / security上更新了cacerts,它开始起作用(由于某些原因,在Java / jdk_1.8 / jre / lib / security上更新cacartes无效)
这是在同事机器上工作的另一件事。安装后,它们位于C: Program Files Java下-创建了一个jdk_1.8文件夹和一个jre_1.8文件夹。首先,我们尝试将证书添加到jdk_1.8 / jre / lib / security / cacerts中,但无效。然后,我们将证书添加到jre_1.8 / lib / security / cacerts-它起作用。他们的机器上没有jdk_1.8 / lib / security文件夹(该文件夹实际上在我的机器上存在)
你真的是我的上帝。多谢,伙计。