该错误是 Java 虚拟机报告的常见错误消息。当 Java 环境没有关于 HTTPS 服务器的信息来验证它是否是一个有效的网站时,会导致这种情况。有时,证书由内部根 CA 提供,或者是自签名证书。这有时会混淆JVM,因为它不是Java“受信任”列表中可以提供这些证书的人之一。
因为我们知道证书是“有效的”,所以我们可以将此证书直接导入到 JVM 中。在这样做的过程中,我们告诉JVM这是一个“可信”的证书,并“忽略”它的任何问题。
您需要将证书添加到 Java 证书颁发机构文件中。对于 Debian/Ubuntu Linux 机器,它通常位于以下位置:
$JAVA_HOME/jre/lib/security/cacerts
但是,您不希望将其添加到 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 的 JVM 密钥库,将证书导入密钥库,将可信密钥库添加到 Jenkins 启动参数,然后重新启动 Jenkins。
# Import certificate
openssl s_client -showcerts -connect https://your-target-server\
< /dev/null 2> /dev/null | openssl x509 -outform PEM > ~/root_ca.pem
# Duplicate Java Keystore file and move into Jenkins...
mkdir $JENKINS_HOME/keystore/
cp $JAVA_HOME/jre/lib/security/cacerts $JENKINS_HOME/keystore/
# Add Certificate to Keystore
keytool -import -alias $ALIAS -keystore $JENKINS_HOME/keystore/cacerts -file ~/root_ca.pem
# Add -Djavax.net.ssl.trustStore=$JENKINS_HOME/keystore/cacerts to the
# Jenkins startup parameters. For Debian/Ubuntu, this is /etc/default/jenkins
echo 'JAVA_ARGS="$JAVA_ARGS -Djavax.net.ssl.trustStore=$JENKINS_HOME/keystore/cacerts"'\
>> /etc/default/jenkins
sudo service jenkins restart
参考帮助: