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

Jon*_*tes 6 java intellij-idea truststore gradle zscaler

我在公司防火墙(Zscaler)的后面,该公司使用自己的证书重写TLS通信。

当我尝试在intellij中创建Gradle项目时,即使将CA和中间证书导入到Intellij(通过Server Certificates设置页面)和我能想到的每个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
Run Code Online (Sandbox Code Playgroud)

我什至将它们导入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
Run Code Online (Sandbox Code Playgroud)

我还需要做其他事情吗?

Nat*_*han 5

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

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

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

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

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