docker - 如何将 CA 根证书添加到 Jenkins Docker 容器上的 LDAP keystore ?

标签 docker jenkins ldap keystore

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

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

错误消息:

  • 在 Jenkins 中:无法连接到 ldaps://taxmducs01-v.cybertax.cso.com:636 :javax.naming.CommunicationException:简单绑定(bind)失败: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

知道我做错了什么吗?

最佳答案

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

关于docker - 如何将 CA 根证书添加到 Jenkins Docker 容器上的 LDAP keystore ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58617169/

相关文章:

Jenkins WebSphere 部署器插件失败

authentication - 无法从 jenkins 连接到 ldap

linux - 如何克隆 OpenLDAP 数据库

java - 安装多个后端镜像时出现 docker 错误

docker - 如何使用命名卷将数据从主机共享到容器?

windows - Windows 防火墙后的 Docker 安装错误

jenkins - Jenkins Pipeline 中 'script' block 外的动态并行阶段

active-directory - SonarQube 和 LDAP - 区分大小写的登录

java - jndi LDAPS 自定义 HostnameVerifier 和 TrustManager

python - docker postgres 角色不存在