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

Artifactory OSS从JCenter下载JAR时出现PKIX证书路径错误

这问题确实挺诡异的——明明配置的是HTTP的JCenter源,却触发了只有HTTPS请求才会出现的PKIX证书路径错误,而且还分两种下载组件表现完全不一样。我来帮你梳理下可能的原因和解决思路:

可能的根源分析

  • JCenter HTTP请求被强制重定向到HTTPS:虽然你配置的是http://jcenter.bintray.com/,但JCenter早就逐步淘汰HTTP支持了,大概率会把所有HTTP请求301/302重定向到HTTPS地址。这时候Artifactory的RemoteRepoBase组件在处理重定向时,会尝试建立HTTPS连接,但你的JVM信任库里没有对应的根证书,就触发了PKIX错误。而HttpRepo可能对重定向的处理逻辑不同,或者已经默认信任了相关证书,所以能正常工作。
  • Artifactory远程仓库配置不一致:检查你的JCenter远程仓库配置,看看RemoteRepoBase是否开启了强制HTTPS验证、或者配置了代理导致请求被强制转成HTTPS,而HttpRepo没有这些设置。比如是否勾选了类似"Enable Certificate Validation"的选项?
  • JVM信任库不统一:Artifactory的不同组件可能使用了不同的JVM环境,其中一个的信任库缺少JCenter的HTTPS根证书,导致RemoteRepoBase请求失败。

排查与解决步骤

  1. 验证JCenter的重定向行为:在Artifactory服务器上执行以下命令,确认HTTP请求是否被重定向到HTTPS:
    curl -v http://jcenter.bintray.com/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
    
    如果输出里有301 Moved Permanently并指向HTTPS地址,那这就是问题的核心。
  2. 切换JCenter仓库为HTTPS并导入证书:
    • 直接把Artifactory里JCenter远程仓库的URL改成https://jcenter.bintray.com/
    • 下载JCenter的HTTPS根证书,导入到Artifactory使用的JVM信任库中,命令示例:
      keytool -importcert -alias jcenter-root -file /path/to/jcenter-ca.crt -keystore $ARTIFACTORY_INSTALL_DIR/jre/lib/security/cacerts
      
      (默认信任库密码是changeit,执行完记得重启Artifactory)
  3. 检查RemoteRepoBase的配置:对比HttpRepo和RemoteRepoBase的配置差异,如果RemoteRepoBase开启了证书验证但你暂时不想导入证书,可以临时关闭这个选项(注意:生产环境不推荐这么做,还是导入证书更安全)。
  4. 统一JVM环境:确认Artifactory的所有组件都使用同一个JVM,检查启动脚本里的JAVA_HOME指向,确保该JVM的cacerts文件包含必要的证书。

日志细节补充

从你提供的日志能明显看到:成功的下载都是HttpRepo处理的,失败的全是RemoteRepoBase。这说明Artifactory可能根据请求场景(比如缓存是否存在、请求发起方)选择不同的组件。比如当缓存中没有目标JAR时,会用RemoteRepoBase去远程拉取,而有缓存时用HttpRepo读取本地缓存?不过不管触发逻辑是什么,解决HTTPS证书的问题是核心,因为重定向几乎是确认的原因。

内容的提问来源于stack exchange,提问作者Danny van Zunderd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:38:00