Jenkins Windows代理认为证书无效问题求助
Jenkins代理连接提示证书无效(Chrome认可证书)的解决方案
这个问题我之前也碰到过,核心原因是Java的证书信任机制和浏览器完全独立——Chrome用的是系统或自身的证书存储,而Jenkins代理依赖的Java Runtime(JRE)默认使用自己的cacerts信任库,你的有效证书并没有被导入到这个库中,所以Java会判定证书无效,哪怕浏览器能正常识别。
下面是不需要用-noCertificateCheck的解决步骤:
1. 从Chrome导出Jenkins服务器的证书
- 打开Chrome访问你的Jenkins地址
https://my-server.com:8888,点击地址栏左侧的锁图标 - 选择「证书」→ 切换到「详细信息」标签页
- 点击「复制到文件」,选择「DER编码二进制X.509 (.CER)」格式,将证书保存到本地(比如
C:\temp\jenkins-cert.cer)
2. 将证书导入Java的cacerts信任库
Java的cacerts文件通常在JRE的安装目录下,比如:C:\Program Files\Java\jre1.8.0_381\lib\security\cacerts(路径根据你的Java版本调整)
需要以管理员身份打开命令提示符,执行以下命令:
keytool -import -alias jenkins-server -file C:\temp\jenkins-cert.cer -keystore "C:\Program Files\Java\jre1.8.0_381\lib\security\cacerts"
- 输入默认密码:
changeit(这是Java默认的cacerts密码,如果你修改过请用自定义密码) - 提示是否信任该证书时,输入
yes确认
3. 验证证书导入是否成功
执行以下命令查看导入的证书信息:
keytool -list -alias jenkins-server -keystore "C:\Program Files\Java\jre1.8.0_381\lib\security\cacerts"
如果能看到证书的详细信息,说明导入成功。
4. 重新启动Jenkins代理
再次运行你之前的代理连接命令:
java -jar agent.jar -jnlpUrl https://my-server.com:8888/computer/myslave/slave-agent.jnlp -secret sdfsdfsdfsdf -workDir "c:\Jenkins"
此时应该不会再出现证书无效的提示了。
额外注意事项
- 确保你操作的是Jenkins代理实际使用的Java版本对应的
cacerts文件(如果代理用的是JDK而非JRE,路径是JDK目录\jre\lib\security\cacerts) - 如果你的证书是由中间CA签发的,仅导入服务器证书可能不够,需要将整个证书链(根CA+中间CA证书)都导入到
cacerts中 - 证书导入后,若后续证书更新,需要重复上述步骤重新导入新证书
内容的提问来源于stack exchange,提问作者red888
相关产品推荐
相关产品推荐

