【jenkins】不能下载插件报错...certpath.SunCertPathBuilderException: unable to find valid certification path解决

针对Jenkins安装插件时出现的证书验证错误,本文提供了详细的解决方案,包括更新站点、修改默认JSON配置、查找并使用正确的证书路径等步骤。

现象:

安装jenkins后下载插件报错日志如下:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:145)
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
        at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
Caused: sun.security.validator.ValidatorException: PKIX path building failed
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
        at sun.security.validator.Validator.validate(Validator.java:260)
        at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1351)
Caused: javax.net.ssl.SSLHandshakeException
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1917)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:301)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:295)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1369)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:156)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:925)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:860)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1043)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)

原因:

默认证书有问题 

解决:

1.更新站点

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 2.进入jenkins站点更新目录修改默认json配置

 cd /var/lib/jenkins/updates/

全局替换default.json里面的下载插件地址:

sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json 

sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json 

3.查找证书路径:

find / -type f -name cacerts

找到了上面的地址: /etc/pki/ca-trust/extracted/java/cacerts

4.修改jenkins配置文件

 vi /etc/sysconfig/jenkins

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Djavax.net.ssl.trustStore=/etc/pki/ca-trust/extracted/java/cacerts"

 5.重启jenkins生效

 systemctl restart jenkins

参考链接: https://www.cnblogs.com/tanghu/p/12869658.html

GitHub - escline/InstallCert: Java program to retrieve server certificate that can be added to local keystore

<think>好的,我现在需要解决用户在使用jEdit安装BufferTabs插件时遇到的PKIX路径构建失败的错误。这个错误通常和SSL证书验证有关,所以首先我得回忆一下Java环境中如何处理这类问题。 用户提到他们按照引用[1]的方法将jar文件放到了指定目录,但可能因为证书问题导致下载失败。PKIX错误说明Java无法验证服务器的SSL证书,可能因为证书过期、不受信任或中间证书缺失。这时候常见的解决方法包括更新Java的信任库、手动导入证书或者绕过证书验证(虽然不推荐)。 首先,我应该考虑让用户检查Java版本,因为旧版本可能缺少最新的根证书。引用[3]提到Jenkins因版本过低导致插件安装问题,同样可能适用于Java环境。建议用户升级到最新的Java版本,或者更新cacerts文件。 如果升级不可行,手动导入证书可能是下一步。用户需要从插件下载URL获取证书,使用keytool导入到Java的cacerts文件中。这需要找到正确的密钥库路径,通常在JDK的lib/security目录下。例如,keytool -importcert命令的使用方法。 另外,用户可能使用的是自签名证书的镜像源,这时候需要确认证书是否正确安装。或者,临时绕过证书验证,通过设置JVM参数-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true和-Dcom.sun.net.ssl.checkRevocation=false,但这可能存在安全风险,需谨慎建议。 此外,引用[2]提到jEdit的路径配置问题,虽然此处可能不直接相关,但需要确保BufferTabs插件与当前jEdit版本兼容,避免其他错误。 最后,建议用户检查网络环境是否有拦截或修改HTTPS流量的情况,比如公司代理,这可能导致证书链不完整。如果是这样,可能需要联系IT部门获取正确的证书。 总结解决方案步骤:1. 更新Java环境;2. 手动导入证书;3. 调整JVM参数(临时);4. 检查网络设置。同时提醒用户安全风险,尤其是绕过验证的方法。</think>### 解决方案:jEdit安装BufferTabs插件时PKIX证书错误 #### 问题原因 PKIX路径构建失败(`PKIX path building failed`)是由于Java运行时环境(JRE)无法验证目标服务器的SSL证书导致的。常见原因包括: 1. 服务器证书未包含在JRE信任库中; 2. 证书链不完整或过期; 3. 本地JRE版本过旧,缺乏根证书更新[^3]。 #### 逐步解决方法 1. **更新Java环境** - 升级到最新JDK/JRE版本(如JDK 11+),确保信任库包含最新根证书。 - 若无法升级,手动更新现有JRE的`cacerts`文件: ```bash # 下载最新cacerts文件(如从OpenJDK仓库) # 替换原文件(路径示例): cp cacerts /usr/lib/jvm/java-11-openjdk/lib/security/ ``` 2. **手动导入证书到JRE信任库** - 从BufferTabs插件下载地址(如`https://plugins.jedit.org`)获取证书: ```bash openssl s_client -connect plugins.jedit.org:443 </dev/null | openssl x509 -outform PEM > jedit_cert.pem ``` - 使用`keytool`导入证书(需管理员权限): ```bash keytool -importcert -alias jedit -file jedit_cert.pem -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit ``` 3. **临时绕过证书验证(不推荐,仅限测试)** - 启动jEdit时添加JVM参数: ```bash jedit -J-Dcom.sun.net.ssl.checkRevocation=false -J-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true ``` - **注意**:此方法会降低安全性,仅作为临时应急措施[^2]。 4. **检查网络代理设置** - 若企业网络使用自签名代理证书,需将代理证书导入JRE信任库(方法同步骤2)。 #### 验证操作 重启jEdit后,尝试重新安装BufferTabs插件。若仍失败,检查日志(`jedit.err`文件)确认具体错误信息。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿来小同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值