我们遇到的情况是公司代理正在解密所有HTTPS流量并使用Java不信任的CA ROOT重新签名。
我们也处于无法修改Java目录中的cacerts文件的情况。
我们在许多Java应用程序中遇到以下问题:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
我们不想添加个人证书。
我们可以做的是改变JVM参数:
-Dtrust_all_cert=true
无效-Dhttps.proxyHost=localhost -Dhttps.proxyPort=8888
无效在第2步中,我们尝试通过Fiddler作为代理,但在我们执行HTTPS请求时不会出现请求。
如果我们设置-Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
并执行HTTP请求,我们会看到Fiddler中的流量。所以......
注意:我们甚至尝试将一个java程序硬连线使用localhost:8888作为代理。同样,适用于HTTP但不适用于HTTPS。
答案 0 :(得分:0)
一种方法是创建一个新的cacerts文件并在JVM中使用它:
keytool -import -noprompt -trustcacerts -alias root -file root.cer -keystore .\cacertsnew -storepass ***
java -Dhttps.proxyHost=someproxy -Dhttps.proxyPort=8080 -Djavax.net.ssl.trustStore=cacertsnew ...