You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins插件管理器:插件数据更新失败故障咨询

解决Jenkins插件更新时的证书DNS匹配异常

你碰到的这个java.security.cert.CertificateException异常,核心原因是Jenkins访问更新服务器updates.jenkins.io时,SSL证书里的DNS备用名称不匹配,导致Java的证书校验逻辑触发了错误。下面给你几个实用的解决思路:

1. 排查本地DNS解析问题

有时候本地DNS缓存过期或者解析错误,会让域名指向了错误的IP,进而引发证书校验失败。可以这么操作:

  • 在Jenkins服务器上执行ping updates.jenkins.io,确认返回的IP是Jenkins官方更新服务器的合法地址
  • 清空本地DNS缓存:Linux系统可以用systemctl restart nscd(如果依赖nscd服务),Windows系统执行ipconfig /flushdns

2. 临时跳过证书校验(仅测试/临时场景用)

如果只是急需更新插件,可以修改Jenkins启动参数,让Java暂时跳过SSL证书校验:

  • 找到Jenkins的启动配置文件(比如/etc/default/jenkins或者自定义启动脚本)
  • 在JAVA_ARGS中添加参数:-Djavax.net.ssl.trustStore=/dev/null -Djavax.net.ssl.trustStorePassword=changeit(注意:这种方式不安全,生产环境不建议长期使用)
  • 重启Jenkins服务后,再尝试执行插件更新操作

3. 导入正确证书到Java信任库(生产环境推荐)

最安全的做法是把updates.jenkins.io的合法证书导入到Jenkins使用的Java信任库中:

  • 先下载证书:执行openssl s_client -connect updates.jenkins.io:443 < /dev/null | openssl x509 -outform PEM > jenkins-updates.crt
  • 找到Jenkins对应Java的信任库路径,通常是$JAVA_HOME/jre/lib/security/cacerts
  • 用keytool导入证书:keytool -import -alias jenkins-updates -file jenkins-updates.crt -keystore $JAVA_HOME/jre/lib/security/cacerts,默认信任库密码是changeit
  • 重启Jenkins服务,再次尝试插件更新

4. 检查Jenkins代理配置

如果你的Jenkins通过代理访问外网,可能是代理服务器篡改了SSL连接或者配置有误:

  • 进入Jenkins「系统管理」→「全局安全配置」,核对代理设置的正确性
  • 测试关闭代理后直接访问更新服务器,看是否能正常完成校验

异常信息回顾:
java.security.cert.CertificateException: No subject alternative DNS name matching updates.jenkins.io found.
at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:214)
at sun.security.util.HostnameChecker.match(HostnameChecker.java:96)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity...

内容的提问来源于stack exchange,提问作者mvw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:38:01