解决Jenkins在Windows上插件更新出现”unable to find valid certification path to requested target”错误

36次阅读
没有评论

问题描述

在将Jenkins部署在Windows机器上,并位于公司代理后面。在使用不同类型的用户尝试更新插件时,遇到了奇怪的行为/错误。Jenkins更新站点已经设置了代理异常。因此,用户不需要为更新插件和Jenkins进行代理验证。测试证明这个设置是有效的。

一个正常用户正常运行服务时,当指定代理服务器和端口时,更新插件是正常的。用户可以指定用户名和密码,或者将http://updates.jenkins.io/添加到无代理主机列表中。

但是,如果将Jenkins以本地系统的身份运行,则会出现以下错误:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
    at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
    at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
    at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
    ...

用户的IT部门有一个所谓的功能用户,用户希望将其用于运行Jenkins服务。但是,当使用功能用户运行Jenkins服务时,会出现与上述相同的错误。无论是否设置代理,都会出现这个问题。

用户在StackOverflow上查找了关于这个错误的解决方法,并尝试了大部分在这里提到的解决方案,但都没有成功。出于明显的安全原因,用户不希望禁用证书检查。

因此,用户的问题是:在更新插件时,功能用户和正常用户之间的差异是什么?有哪些可能的调查方向可以帮助解决问题?如何获得有关这个问题的更多信息。

解决方案

以下方案中涉及到的操作可能会因版本差异而有所不同,请确保在执行操作前备份重要数据。

解决方案1:更新Java版本和信任库

该问题可能是由于过时的Java版本无法处理Let’s Encrypt证书,导致无法识别jenkins.io证书。尝试升级Java版本和/或信任库可能会解决问题。
1. 确定您正在使用的Java版本。您可以在Jenkins的/systemInfo页面下找到Java版本信息。
2. 如果您的Java版本低于11.0.15,请考虑升级到较新的版本。
3. 查找您Java安装目录下的jre/lib/security/cacerts文件。这是Java信任库的位置。
4. 您可以尝试根据mkyongmagicmonster的方法,手动将jenkins.io证书添加到信任库中。

解决方案2:检查JDK版本和配置

确认您使用的JDK版本是否符合要求。根据Jenkins社区的建议,Jenkins要求的JDK版本应高于11.0.15。您可以在Jenkins的/systemInfo页面下找到JDK版本信息。
1. 确保您正在使用预期的JDK版本。
2. 如果JDK版本符合要求,但问题仍然存在,您可能需要检查JDK的配置和安装是否正确。

解决方案3:考虑其他因素

如果上述解决方案未能解决问题,您可以考虑以下其他因素:
1. 检查功能用户和正常用户之间的差异。可能存在与权限、环境变量或配置相关的问题。
2. 检查Jenkins服务的日志,看是否有其他有关错误的提示,以获取更多信息。
3. 如果您使用了公司代理,确保代理设置正确,并且功能用户是否具有正确的代理访问权限。

请注意,解决此问题可能需要多次尝试不同的方法,并进行适当的调查和分析。

请注意,解决问题涉及到的具体操作步骤可能因系统环境和版本不同而有所不同。在尝试任何更改之前,请务必备份重要数据,以防万一出现意外情况。如果问题持续存在,您可能需要与Jenkins社区或您的IT部门寻求进一步的支持和建议。

总结

当在Windows上部署Jenkins并在公司代理后面运行时,更新插件可能会出现”unable to find valid certification path to requested target”错误。要解决这个问题,您可以尝试升级Java版本和信任库,检查JDK版本和配置,以及考虑其他因素,如权限和环境配置。根据具体情况,您可能需要多次尝试不同的方法来解决问题。在进行任何更改之前,请务必备份重要数据,并注意安全性和稳定性。

请注意,解决方案中提到的网址链接可能会因时间推移而失效。如有需要,请自行搜索相关信息或参考类似的解决方案。

正文完