我正在尝试使用笔记本电脑上的 Jenkins Git 插件 从 Jenkins 构建 Git 存储库。 Git 存储库位于具有自签名证书的公司受信任服务器上。在指定 URL 时,我总是遇到错误:
Failed to connect to repository : sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
我了解由于自签名证书而导致出现此错误,但服务器属于我的公司并由授权机构签名。
我还尝试使用自签名从另一台笔记本电脑导入相同的存储库并不断收到相同的错误。
任何帮助将不胜感激
原文由 user2118245 发布,翻译遵循 CC BY-SA 4.0 许可协议
该错误是 Java 虚拟机报告的常见错误消息。这是由于 Java 环境没有关于 HTTPS 服务器的信息来验证它是一个有效的网站。有时证书由内部根 CA 提供或者是自签名证书。这有时会使 JVM 感到困惑,因为它不是 Java“受信任”列表中可以提供这些证书的人之一。
因为我们知道证书是“有效的”,所以我们可以将此证书直接导入 JVM。这样做时,我们告诉 JVM 这是一个“受信任”的证书,并“忽略”它的任何问题。
您需要将证书添加到您的 Java 证书颁发机构文件中。对于 Debian/Ubuntu Linux 机器,通常位于此处:
但是,您不想将它添加到 JRE cacert 密钥库,因为它会被 JRE 覆盖/重写,因此最好为 Jenkins 复制此文件。
$JAVA_HOME
- 这应该是您当前的 java 主页所在的位置。如果您只安装了 Java 运行时环境 (JRE),则可以将$JAVA_HOME/jre
替换为$JRE_HOME
。$ALIAS
- 这可以是任何值。这是区别于其他证书的价值。示例是“git-repo”或“工件服务器”。$JENKINS_HOME
- 这是你的詹金斯家的路径。经常/var/lib/jenkins
。您可以使用以下命令将证书导入 JVM cacerts 文件。 – 在你的 Jenkins master 中。获取证书,复制Jenkins的JVM keystore,将证书导入keystore,将可信keystore添加到Jenkins启动参数中,重启Jenkins。
参考帮助: