Jenkins 2.190.3插件下载SSL报错启动失败求解决方案
版本问题说明
2.235.1.2及之后的LTS版本已内置修复该根证书过期问题的补丁,你升级后仍报错的核心原因是:你修改的hudson.model.UpdateCenter.xml仅在Jenkins服务完全启动后的运行时生效,初始化阶段执行的插件预安装脚本不会读取该配置,脚本默认硬编码调用HTTPS的更新中心地址,而你使用的旧版本镜像内置的系统根证书包仍包含已过期的DST Root CA X3根证书,导致curl校验失败。
可行解决方案
- 方案1:添加curl不安全参数(快速生效,测试环境优先)
官方镜像内置的install-plugins.sh原生支持CURL_OPTIONS环境变量,只需在容器启动参数中添加该环境变量即可跳过SSL校验:
CURL_OPTIONS="-k"
如果是EKS部署,直接在Deployment的env字段添加该变量即可。
- 方案2:更新系统根证书包(生产环境推荐,无安全性妥协)
在自定义Jenkins镜像的Dockerfile中添加移除过期根证书、更新证书缓存的逻辑:
FROM jenkins/jenkins:2.235.4 # 切换到root用户操作证书 USER root RUN sed -i '/DST Root CA X3/d' /etc/ca-certificates.conf && \ update-ca-certificates --fresh # 切回jenkins用户启动服务 USER jenkins
构建新镜像后替换原镜像部署即可。
- 方案3:强制初始化阶段使用HTTP更新源
添加以下三个环境变量覆盖初始化脚本默认的HTTPS更新源地址,同时添加启动参数关闭签名校验:
环境变量:
JENKINS_UC=http://updates.jenkins.io/update-center.json JENKINS_UC_EXPERIMENTAL=http://updates.jenkins.io/experimental/update-center.json JENKINS_INCREMENTALS_REPO_MIRROR=http://repo.jenkins-ci.org/incrementals
启动参数添加:
-Dhudson.model.DownloadService.noSignatureCheck=true
内容的提问来源于stack exchange,提问作者user6826691
相关产品推荐
相关产品推荐

