来自守护进程的错误响应:获取 https://192.168.1.5/v2/: x509: 由未知机构签名的证书

时间:2020-12-20 17:23:19

标签: docker-registry

我设置并运行了一个私有 docker 注册表。它配置了自签名 SSL 证书并且运行良好。

我已经设法从远程机器 docker 登录,但首先我必须将根 ca 复制到客户端(ubuntu 18.04 LTS)并更新 ca 证书

<块引用>

cp ca.crt /usr/local/share/ca-certificates/ 须藤更新-ca-证书

这有效,我可以登录没有问题。

现在我有另一个客户端,我想访问这个私有 docker 存储库。它是在另一个机器上的 docker 中运行的 Jenkins 服务器。我也将 ca.crt 复制到此框中并按照上述步骤操作。即使在重新启动 docker 容器后,我仍然无法登录 docker。

<块引用>

来自守护进程的错误响应:获取 https://192.168.1.5/v2/:x509:由未知机构签署的证书

当我按照一个 Ubuntu 机器 (18.04 LTS) 上的步骤进行操作时,我感到非常困惑,它的工作原理非常棒。但是在 JENKINS 容器 (Ubuntu Xenial 16.04) 上,它给出了这个错误。

我还能检查什么?

1 个答案:

答案 0 :(得分:1)

好吧,对我来说,我遵循了有关在 docker 容器中设置 Jenkins 的官方文档:https://www.jenkins.io/doc/book/installing/docker/#setup-wizard,当我想将使用 Jenkins 构建的映像推送到我的私有注册表(Harbor 注册表)时,我遇到了这个问题自签名证书。

我的环境如下: 我已经在我的 VM (RHEL8) 上安装了 docker 引擎 我定义了一个包含 2 个服务的 docker-compose 文件:

  1. docker-dind:为了在 Jenkins 节点内执行 Docker 命令,这个命令将基于 Dockerfile 构建,如下所示:

docker-dind Dockerfile 示例

FROM docker:dind

# Providing Harbor's and our CA's (our private registry) certs to Docker that is linked to Jenkins (docker:dind)

RUN mkdir -p /etc/docker/certs.d/my.private.registry
COPY certs/ /etc/docker/certs.d/my.private.registry
PS: your certs/ folder should contain:
       ├── my.private.registry.cert  <-- yor Registry cert signed by your CA
       ├── my.private.registry.key   <-- your Registry key signed by your CA
       └── myRootCA.crt  <-- Certificate authority that signed the registry certificate

  1. jenkins-blueocean:Jenkins docker 容器,这个容器也基于文档中提到的 Dockerfile,我做了一些更改,因此 Jenkins 实例将信任我的自签名 CA 颁发的所有证书(在您的 Dockerfile 中,添加以下几行):

jenkins-blueocean Dockerfile 示例

# Copying our self-signed CA's certs so Jenkins-OS, Jenkins-JVM, and Jenkins-git will use it in the chain of trust 
COPY certs/myRootCA.crt     /usr/local/share/ca-certificates

# importing your CA-cert to Java keystore
RUN keytool -import -noprompt -trustcacerts -alias myRootCA -file /usr/local/share/ca-certificates/urRootCA.crt -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit

# update your system cert-store 
RUN update-ca-certificates

# config jenkins git to use your system store as a trusted one
RUN git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt

现在,运行:

docker-compose up -d --build

它应该可以解决问题。

有关在 docker 容器中运行 Jenkins 的更多详细信息,请查看这里 https://www.jenkins.io/doc/book/installing/docker/#setup-wizard

有关集成私有注册表以便 docker 可以使用的更多详细信息,请查看此 (Harbor Registry)

https://goharbor.io/docs/2.1.0/install-config/configure-https/

相关问题