我写了一个 web 服务客户端,现在无法让它通过 https 运行。虽然我将 cert.pfx(alias=cert) 导入 javas cacerts 并成功添加了一个带有 certs 别名的条目。
我仍然不能在 wsdl url 上使用 wsimport 提示。它说:PKIX 路径构建失败,无法找到请求目标的有效证书路径。哦,那好吧。所以我进行了一些研究并尝试将其设置为
setlocal set _JAVA_OPTIONS=%_JAVA_OPTIONS%
-Djavax.net.ssl.trustStore="C:\Program Files\Java\jdk1.7.0_79\jre\lib\security\cacerts"
-Djavax.net.ssl.trustStorePassword=changeit -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=xxxxxxxxx -Djavax.net.ssl.keyStore="d:\cert.pfx" "C:\Program Files\Java\jdk1.7.0_79\bin\wsimport" -s C:\Users\me\keystore\bin\s
-keep https://service.xxxxxxxxxxx.de/xxxxxxxxxxxxTest?wsdl endlocal
没有成功。
我还尝试从 cert.pfx 文件中导出证书,然后通过 keytool -exportcert 和 keytool -importcert 将证书导入 cacerts。后来我尝试从我的浏览器导出证书(因为我的浏览器处理证书很好并且可以访问 https url)。我将根证书导出到 root.cer 文件中,然后将此 .cer 导入到我的 cacerts 中(我必须使用与 cert 不同的别名。使用 cert 作为别名时,我在使用 keytool 时在控制台中收到“密钥不匹配”消息迅速的)。
cacerts 上的转储表明 cacerts 中确实有一个条目。我不明白为什么 java 拒绝在 url 上执行 wsimport。
最后,我只是将 url 目标下载到我的机器上,并对下载的 .xml 文件进行了 wsimport,然后更改了生成的存根中的 url 参数。但是没有帮助,因为当我运行应用程序时,我遇到了“PKIX ...无法找到请求目标的有效证书路径”错误。