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

构建Apollo开源项目时Bazel遇PKIX证书路径错误,需补充哪些设置?

解决Bazel构建Apollo时SSL证书验证失败问题

可行解决方案:

  • 确认Bazel使用的JDK并导入证书
    先执行命令查看Bazel实际依赖的JDK路径:

    bazel info java-home
    

    如果该路径与你配置的$JAVA_HOME不一致,需要将证书导入到这个JDK的证书库中,命令如下(替换<bazel-java-home>为实际输出路径):

    sudo keytool -importcert -alias startsl -keystore <bazel-java-home>/jre/lib/security/cacerts -storepass changeit -file my.crt
    
  • 直接为Bazel指定信任证书库
    可以临时构建时添加参数,也可以写入配置文件持久化:

    1. 临时构建命令:
    bazel build --jvmopt="-Djavax.net.ssl.trustStore=/path/to/your/cacerts" --jvmopt="-Djavax.net.ssl.trustStorePassword=changeit"
    
    1. 写入项目根目录或用户目录下的.bazelrc文件:
    build --jvmopt="-Djavax.net.ssl.trustStore=/path/to/your/cacerts"
    build --jvmopt="-Djavax.net.ssl.trustStorePassword=changeit"
    

    注:/path/to/your/cacerts替换为你已导入证书的证书库实际路径。

  • 配置Bazel代理及证书
    若依赖代理访问外部资源,需为Bazel单独配置代理参数(结合证书):
    在.bazelrc中添加:

    build --host_jvmopt="-Dhttps.proxyHost=你的代理地址" --host_jvmopt="-Dhttps.proxyPort=代理端口"
    build --host_jvmopt="-Djavax.net.ssl.trustStore=/path/to/cacerts" --host_jvmopt="-Djavax.net.ssl.trustStorePassword=changeit"
    

    或设置环境变量:

    export BAZEL_JAVAC_OPTS="-Dhttps.proxyHost=xxx -Dhttps.proxyPort=xxx -Djavax.net.ssl.trustStore=/path/to/cacerts -Djavax.net.ssl.trustStorePassword=changeit"
    
  • 清理Bazel缓存重试
    执行命令清理所有缓存,避免旧状态干扰:

    bazel clean --expunge
    

    之后重新执行构建命令。

  • 验证证书导入有效性
    检查证书是否成功导入证书库:

    keytool -list -alias startsl -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
    

    若提示“别名不存在”,说明之前的导入操作未生效,需重新执行导入命令(注意使用sudo获取权限)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:35:42