Intellij/Gradle 同步在企业代理后面失败

我位于企业防火墙(Zscaler)后面,该防火墙使用自己的证书重写TLS流量。

当我尝试在 intellij 中创建 Gradle 项目时,我收到以下错误,即使将 CA 和中间证书导入 Intellij(通过设置页面)和我能想到的每个 Java 信任存储区。Server Certificates

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

我需要做其他事情吗?


答案 1

公司颁发的证书需要包含在 Gradle 使用的信任库中。对此进行故障排除可能很困难,尤其是在安装了多个版本的 Java 和 JRE 的情况下。首先要确定的是JRE Gradle正在使用什么。有一个答案指出,通过使用Gradle Wrapper解决了这个问题。Gradle Wrapper 调用在 gradle.properties 中定义的特定于项目的 Java 环境。默认情况下,它设置为 。要使用不受信任的证书构建 Gradle,可以按照文档中的说明进行操作distributionBase=GRADLE_USER_HOME

HTTP 生成缓存后端的 SSL 证书可能不受信任,因为它是内部预配的,或者是自签名证书。

在这种情况下,您可以将构建 JVM 环境配置为信任证书,也可以将此属性设置为 true 以禁用对服务器身份的验证。

允许与不受信任的服务器进行通信可在传输过程中保持数据加密,但使中间人更容易模拟目标服务器并捕获数据。

最好将证书导入到Gradle使用的JVM中,这看起来像您尝试做的事情。如果您希望 IntelliJ 了解公司证书,可以通过导航到“设置”>工具>服务器证书“,通过 UI 导入这些证书。导入组织颁发的证书文件,然后重试生成。


答案 2

大多数情况下,它可能与证书有关。要验证这一点,删除该选项并选中“自动接受不受信任的证书”可能会解决此问题。正如@Colm Bhandal所评论的那样,这不是一个解决方案,而是一个解决方法。accepted certificates

enter image description here


推荐