当我继续发布Maven , Git和Jenkins教程作为TechTarget对流行的DevOps工具的报道的一部分时,有时在我处理示例时,有时会遇到难以诊断且难以修复的特殊问题。 随机且令人讨厌的SunCertPathBuilderException Jenkins插件下载错误只是许多想到的此类问题之一。 我不确定为什么插件经常成为令人震惊的原因,无论是Jenkins插件还是Maven插件,但是插件通常是有问题的。
SunCertPathBuilderException堆栈跟踪
Jenkins SunCertPathBuilderException错误的stacktrace看起来像这样:
Caused by: sun.security.provider.certpath. SunCertPathBuilderException : unable to find valid certification path to requested target at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196) at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268) at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
<tl; dr>
要快速解决SunCertPathBuilderException Jenkins插件下载问题,请将更新站点的协议前缀从https更改为http。
http://updates.jenkins.io/update-center.json
</ tl; dr>
视频:有关如何修复Jenkins SunCertPathBuilderException错误的快速教程。
对抗PKIX有效证书错误
我不确定谁尝试下载Jenkins插件时会触发SunCertPathBuilderException的原因。 有时,一台全新安装了JDK和Jenkins的计算机可以访问Jenkins插件下载页面而不会触发错误。 其他时候,Jenkins和JDK的全新安装会在其中运行。 也许JDK的某些增量版本或嵌入式Jetty Web服务器比其他版本更顽强?
有时我认为SunCertPathBuilderException错误与使用虚拟机或特定操作系统有关,但是无论是运行虚拟Ubuntu盒还是本地Windows安装,问题都是随机发生的,我无法确切知道Jenkins的SunCertPathBuilderException问题是。
使用证书修复Jenkins插件问题
如果您浏览这些论坛,则会发现两个通常推荐的解决方案。 首先,这既是最繁重的也是技术上最正确的,是更新嵌入式Jetty Web容器和底层JDK使用的安全证书目录。 如果我在银行工作,我可能会提倡使用这种特定的SunCertPathBuilderException解决方案,但这是繁重的工作,并且如果您只需要在本地安装Jenkins以便学习该工具并编写一些Jenkins教程 ,那就太过分了。
跳过证书检查插件
解决SunCertPathBuilderException Jenkins插件下载问题的第二个流行选项是安装“ 跳过证书检查”插件 。 詹金斯(Jenkins)的创建者川口昌介(Kohsuke Kawaguchi)创建了一个轻量级的插件,该插件告诉基础JVM绕过所有安全证书检查。 我自己使用过此SunCertPathBuilderException解决方案,这是一个很好的解决方案。 最初,我认为尝试安装Jenkins插件会遇到一个自相矛盾的问题,该问题解决了无法安装Jenkins插件的问题,但是该附件似乎与该工具捆绑在一起。 这个解决方案使我大吃一惊,但是实际上有一个解决SunCertPathBuilderException问题的简单得多的解决方案。
SunCertPathBuilderException修复
最快SunCertPathBuilderException解决方法是詹金斯更新站点的从http S中的协议更改为HTTP。 由于是安全套接字层通信引起了此问题,因此,如果您不使用SSL,则问题会消失。
要更改Jenkins插件下载URL,请转到Jenkins插件管理器的高级选项卡,然后向下滚动到Jenkins更新站点URL的编辑框。 删除“ https”中的“ s”,提交更改,然后继续搜索Jenkins插件。 下载目录可轻松访问,并且下载Jenkins Git插件或Jenkins Maven插件等组件所涉及的后续步骤将毫无问题。