Java Intellij/Gradle同步在公司代理后失败
我在一个公司防火墙(Zscaler)后面,它用自己的证书重写TLS流量 当我尝试在intellij中创建Gradle项目时,我收到以下错误,即使是在将CA和中间证书导入intellij(通过Java Intellij/Gradle同步在公司代理后失败,java,gradle,intellij-idea,truststore,zscaler,Java,Gradle,Intellij Idea,Truststore,Zscaler,我在一个公司防火墙(Zscaler)后面,它用自己的证书重写TLS流量 当我尝试在intellij中创建Gradle项目时,我收到以下错误,即使是在将CA和中间证书导入intellij(通过服务器证书设置页面)和我能想到的每个Java信任存储之后 Sync Failed Download https://services.gradle.org/distributions/gradle-4.0-bin.zip 797ms Cause: unable to find valid certific
服务器证书
设置页面)和我能想到的每个Java信任存储之后
Sync Failed
Download https://services.gradle.org/distributions/gradle-4.0-bin.zip 797ms
Cause: unable to find valid certification path to requested target
我甚至将它们导入Intellij的私人JRE中,例如
C:\Progra~1\Java\jdk1.8.0_131\bin\keytool.exe -importcert -alias zscaler_root_ca -keystore C:\Progra~1\Java\jdk1.8.0_131\jre\lib\security\cacerts -storepass changeit -file zscaler_root_ca.crt
C:\Progra~1\Java\jre1.8.0_151\bin\keytool.exe -importcert -alias zscaler_root_ca -keystore C:\Progra~1\Java\jre1.8.0_151\lib\security\cacerts -storepass changeit -file zscaler_root_ca.crt
"C:\Users\jonathan.bates\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\173.4301.25\jre64\bin\keytool.exe" -importcert -alias zscaler_root_ca -keystore "C:\Users\jonathan.bates\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\173.4301.25\jre64\lib\security\cacerts" -storepass changeit -file zscaler_root_ca.crt
我还需要做什么吗?我将设置更新为
自动导入证书
,它对我有效
Settings -> Tools -> Server Certificates -> Check the box for auto import
公司颁发的证书需要包含在Gradle使用的信任库中。对此进行故障排除可能很困难,特别是如果您安装了多个版本的Java和JRE。首先要确定的是JRE Gradle正在使用什么。有一个答案指出这个问题是通过使用Gradle包装器解决的。调用在gradle.properties中定义的特定于项目的Java环境。默认情况下,它设置为
distributionBase=GRADLE\u USER\u HOME
。要使Gradle使用不受信任的证书进行构建,可以遵循以下步骤:
HTTP生成缓存后端的SSL证书可能不受信任,因为它是内部设置的或自签名的证书
在这种情况下,您可以将构建JVM环境配置为信任证书,或者将此属性设置为true以禁用服务器身份验证
允许与不受信任的服务器进行通信,可以在传输过程中对数据进行加密,但中间人更容易模拟预期的服务器并捕获数据
最好将cert导入Gradle使用的JVM中,这看起来就像您试图做的一样。如果希望IntelliJ了解公司证书,可以通过导航到设置>工具>服务器证书,通过UI导入这些证书。导入您的组织颁发的证书文件,然后重试生成。通常它可能与证书相关。要验证这一点,删除选项
接受的证书
并选中“自动接受不受信任的证书”可能会解决此问题。正如@Colm Bhandal所评论的,这不是一个解决方案,而是一个变通解决方案
我还需要做些什么吗
是的,可能JAVA_HOME
是一个变量,Gradle通过查看来选择要执行它的JAVA。
一旦Java的信任存储包含所需的证书,请尝试将
Java\u HOME
设置为该目录。对于我来说,每个设置似乎都是正确的,上面提到的要检查。
我不知道原因,但错误消息:无法找到请求目标的有效认证路径
消失,升级项目的gradle包装后,gradle build
开始工作:
关键操作是在终端选项卡中运行gradlew.bat
。修复:将ZScaler根证书放入IJ