发布到 Slack 时出错 - Docker jenkins 无法找到有效证书

问题描述

我的 jenkins 正在运行 docker-compose(根据此 Link 托管)。我正在尝试通过 jenkinsslackSlack Notification Plugin -2.45 集成。下面是我在 jenkins 中启用的 slack 配置的快照。

Jenkins Slack Configuration

Test Connection 总是返回 Failure。在 Jenkins ssl certificate error 部分的 System Log 下方。

Error posting to Slack
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
    at sun.security.validator.PKIXValidator.dobuild(PKIXValidator.java:445)
Caused: sun.security.validator.ValidatorException: PKIX path building Failed
    at sun.security.validator.PKIXValidator.dobuild(PKIXValidator.java:450)
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:317)
    at sun.security.validator.Validator.validate(Validator.java:262)
    at sun.security.ssl.x509trustmanagerImpl.validate(x509trustmanagerImpl.java:330)
    at sun.security.ssl.x509trustmanagerImpl.checkTrusted(x509trustmanagerImpl.java:237)
    at sun.security.ssl.x509trustmanagerImpl.checkServerTrusted(x509trustmanagerImpl.java:132)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621)
Caused: javax.net.ssl.SSLHandshakeException

我的 docker-container 图像低于 java version

# docker exec -it jenkins java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08,mixed mode)

我使用 Plugin Manager 协议安装来自 https 的新插件没有问题。

为了修复证书错误,我已将 https://updates.jenkins.io/update-center.json 更改为 http,但同样的问题仍然存在。

我们的网络代理团队确认已允许访问 slack.com:443

如何在我的 docker-jenkins解决此问题?任何指针都会有所帮助。

解决方法

使用 dockerfile 命令创建 COPY ./cacerts /usr/local/openjdk-8/jre/lib/security/,现在 Jenkins 和 Slack 连接有效。