Java PKIX/validator.validator的SSL问题代理异常

Java PKIX/validator.validator的SSL问题代理异常,java,https,jvm,http-proxy,Java,Https,Jvm,Http Proxy,我们所处的场景是,公司代理解密所有HTTPS流量,并使用Java不信任的CA根对其重新签名 我们还处于无法修改Java目录中的cacerts文件的场景中 我们在许多Java应用程序中遇到以下问题: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali

我们所处的场景是,公司代理解密所有HTTPS流量,并使用Java不信任的CA根对其重新签名

我们还处于无法修改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\u all\u cert=true
    无效
  • -Dhttps.proxyHost=localhost-Dhttps.proxyPort=8888
    无效
  • 在第2步中,我们尝试将Fiddler作为代理,但在执行HTTPS请求时,不会出现任何请求

    如果我们设置
    -Dhttp.proxyHost=localhost-Dhttp.proxyPort=8888
    并执行HTTP请求,我们可以在Fiddler中看到流量。所以

  • 为什么不相信所有人的帮助
  • 为什么Java不使用我们指定的https代理

  • 注意:我们甚至尝试制作一个java程序,使用localhost:8888作为代理。同样,它适用于HTTP,但不适用于HTTPS。

    一种方法是创建一个新的cacerts文件,并在JVM中使用该文件:

  • 下载CA根证书(例如Root.cer)
  • keytool-import-noprompt-trustcacerts-alias root-file root.cer-keystore。\cacertsnew-storepass***
  • java-Dhttps.proxyHost=someproxy-Dhttps.proxyPort=8080-Djavax.net.ssl.trustStore=cacertsnew…

  • 一种方法是创建一个新的cacerts文件并在JVM中使用它:

  • 下载CA根证书(例如Root.cer)
  • keytool-import-noprompt-trustcacerts-alias root-file root.cer-keystore。\cacertsnew-storepass***
  • java-Dhttps.proxyHost=someproxy-Dhttps.proxyPort=8080-Djavax.net.ssl.trustStore=cacertsnew…

  • 不幸的是,这对gradlew没有帮助。不幸的是,这对gradlew没有帮助。