【问题标题】:How do I add CA root cert to LDAP keystore on Jenkins Docker container?如何将 CA 根证书添加到 Jenkins Docker 容器上的 LDAP 密钥库?
【发布时间】:2020-02-25 06:26:10
【问题描述】:

我想在 Docker 容器中的 Jenkins 上配置 ldaps。

问题:Jenkins 将不信任我的证书(由 Wireshark 跟踪确认),似乎证书未加载到密钥库(或正确的密钥库)

错误信息:

  • 在 Jenkins 中:无法连接到 ldaps://taxmducs01-v.cybertax.cso.com:636:javax.naming.CommunicationException:简单绑定失败:taxmducs01-v.cybertax.cso。 com:636 [根异常是 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX 路径构建失败:

  • 在 Wireshark 中:警报(级别:致命,描述:证书未知)

已解决的问题:

这是我的 dockerfile:

FROM jenkinsci/blueocean

USER root 

COPY ["entrypoint.sh", "/"]

RUN apk add sudo && chmod 755 /entrypoint.sh

ENTRYPOINT ["/bin/bash","-c","./entrypoint.sh"]

COPY ["ldapRoot.cer", "/tmp"]
RUN \
    cd /tmp \
    && keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias ldapcert -file ldapRoot.cer

这是 docker-compose 的日志输出:

docker-compose up --build
Building jenkins
Step 1/7 : FROM jenkinsci/blueocean
 ---> 9e29fdde63cc
Step 2/7 : USER root
 ---> Using cache
 ---> 597101d109b7
Step 3/7 : COPY ["entrypoint.sh", "/"]
 ---> Using cache
 ---> 32eea6c01a84
Step 4/7 : RUN apk add sudo && chmod 755 /entrypoint.sh
 ---> Using cache
 ---> 28858a5e6ec5
Step 5/7 : ENTRYPOINT ["/bin/bash","-c","./entrypoint.sh"]
 ---> Using cache
 ---> f466e9893c75
Step 6/7 : COPY ["ldapRoot.cer", "/tmp"]
 ---> 64dda06d6ed4
Step 7/7 : RUN     cd /tmp     && keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias ldapcert -file ldapRoot.cer
 ---> Running in 95309101bec9
Certificate was added to keystore
Removing intermediate container 95309101bec9
 ---> cff58441080f
Successfully built cff58441080f
Successfully tagged docker_jenkins:latest
Recreating docker_jenkins_1 ... done

知道我做错了什么吗?

【问题讨论】:

    标签: docker jenkins ldap keystore


    【解决方案1】:

    我相信您刚刚创建了一个新的密钥库文件/tmp/cacerts,而不是更新/etc/ssl/certs/java/cacerts。如果更新keytool 导入命令以指向/etc/ssl/certs/java/cacerts 会怎样?或者,entrypoint.sh 是否使用 /tmp/cacerts 作为您的信任库?

    【讨论】:

    • 这成功了!谢谢,也学到了一些东西:1)LDAP/LDAPS 集成似乎在将角色应用于组时出现问题,我使用了 Active Directory 插件。仍然需要按照这些步骤来使加密工作。 2) Active Directory 使用 starttls,因此 wireshark 跟踪将首先显示 Jenkins 和服务器之间的 ldap 通信,然后 TLS 将在之后启动。您还可以使用服务器日志查看发生的情况(管理 Jenkins > 系统日志 > 添加新记录器 > 为其命名,使用记录器“hudson.plugins.active_directory.ActiveDirectorySecurityRealm”并保存)
    猜你喜欢
    • 2019-05-12
    • 2013-04-10
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2018-12-21
    • 2021-01-17
    • 2013-10-27
    相关资源
    最近更新 更多