启动jenkins.war报CertPathValidatorException签名校验失败排查
问题根因
该报错核心是Jenkins更新源签名校验失败,和Java环境加密能力不匹配、证书库缺失、网络劫持三类原因相关。java -version能正常返回版本仅代表Java基础运行环境配置正常,无法证明加密组件、证书库状态符合要求。
解决方案(按优先级从高到低执行)
- 升级JDK 8到最新稳定小版本
你当前使用的大概率是8u161之前的早期JDK 8版本,这类版本默认带JCE加密强度限制,无法兼容Jenkins更新源当前使用的签名算法,直接卸载现有旧版JDK,安装8u301及以上版本的JDK 8,重新确认版本号后再启动Jenkins即可,90%以上的同类问题升级JDK后可直接解决。 - 手动补全JDK证书库的根证书
如果升级JDK后仍报错,说明当前JDK的cacerts证书库缺失Jenkins更新源的根证书:- 执行
which java找到Java执行路径,回溯定位到JDK根目录,默认证书库路径为$JDK_HOME/jre/lib/security/cacerts,证书库默认密码为changeit - 直接通过浏览器访问Jenkins官方更新站点,导出站点根证书保存到本地,命名为
jenkins-update.crt - 执行导入命令:
输入密码后确认导入,重启Jenkins即可。keytool -import -alias jenkins-update -keystore $JDK_HOME/jre/lib/security/cacerts -file jenkins-update.crt
- 执行
- 临时跳过签名校验应急启动
如果需要快速启动环境排查问题,可以在启动命令中追加参数跳过签名校验,命令如下:
启动成功进入管理后台后,到插件管理的高级配置页,将更新源替换为国内可直连的公共镜像源,后续不会再触发同类报错。java -jar jenkins.war --httpPort=8889 -Dhudson.model.DownloadService.noSignatureCheck=true - 排查网络代理劫持问题
如果虚拟机网络经过企业代理、内网网关,大概率是代理设备篡改了更新源的响应内容导致签名不匹配,将更新源域名加入代理白名单即可解决。
内容的提问来源于stack exchange,提问作者Shruti
相关产品推荐
相关产品推荐

