You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CodeBuild私有网络中Gradle配置代理后无法访问网络SSL报错问题

问题根因

报错由两个原因叠加导致:

  1. Gradle Wrapper下载自身发行包的阶段优先级高于项目内.gradle/gradle.properties的加载,代理配置还未生效就发起了公网请求
  2. 私有网络的代理使用自签发SSL证书解密HTTPS流量,Java默认信任库没有该证书导致SSL握手失败

解决方案

1. 调整代理配置生效时机,确保Wrapper阶段能读取到

Gradle Wrapper执行时会优先读取环境变量和自身配置文件的参数,选择任意一种方式配置即可:

  • 方式一:在CodeBuild构建脚本最前端注入GRADLE_OPTS环境变量
    export GRADLE_OPTS="-Dhttps.proxyHost=<https-proxy-host> -Dhttps.proxyPort=<https-proxy-port> -Dhttp.proxyHost=<http-proxy-host> -Dhttp.proxyPort=<http-proxy-port> -Dhttp.nonProxyHosts=localhost|127.0.0.1"
    
  • 方式二:把代理配置写入gradle/wrapper/gradle-wrapper.properties(Wrapper专属配置文件,加载优先级更高)
    在该文件末尾追加以下内容:
    systemProp.https.proxyHost=<https-proxy-host>
    systemProp.https.proxyPort=<https-proxy-port>
    systemProp.http.proxyHost=<http-proxy-host>
    systemProp.http.proxyPort=<http-proxy-port>
    systemProp.http.nonProxyHosts=localhost|127.0.0.1
    
  • 方式三(可选,无公网需求最优解):把gradle-6.8.3-bin.zip上传到内部私有存储,修改gradle/wrapper/gradle-wrapper.properties里的distributionUrl参数为内部地址,完全绕过公网下载需求。

2. 导入代理自签证书到Java信任库

PKIX路径构建失败的核心是Java不信任代理的自签证书,在构建脚本中执行以下命令导入证书:

# 先导出代理的根证书,替换<proxy-host> <proxy-port>为你的代理地址端口
openssl s_client -connect <proxy-host>:<proxy-port> -showcerts < /dev/null | openssl x509 -outform PEM > proxy-ca.crt

# 导入证书到Java默认信任库,AWS Ubuntu 5.0标准镜像默认信任库密码为changeit
sudo keytool -importcert -file proxy-ca.crt -alias proxy-ca -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit -noprompt

3. CodeBuild场景优化(可选)

可以提前把代理证书导入到基础镜像中,推送到ECR后使用自定义镜像执行构建,减少每次构建的证书导入耗时;也可以直接在CodeBuild项目的环境变量配置页提前配置GRADLE_OPTS,避免每次构建都重复写入。

以上配置完成后再执行./gradlew clean build即可正常执行。


内容的提问来源于stack exchange,提问作者SlimenTN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:45:03