繁体   English   中英

docker login 自托管注册表 = x509:由未知机构签署的证书

[英]docker login self hosted registry = x509: certificate signed by unknown authority

我是 docker 新手,正在尝试为 docker swarm 设置我的注册表。

我有三个相互交互的 debian 安装:

  • 登记处
  • 网站
  • 数据库

尝试将我的数据库与我的网站和注册表分开设置。

我的registry machine还托管了一个网站,比如说由vmreg.com ssl证书管理的letsencrypt 我使用此证书来签署我的网站和注册表。

docker run -d --restart=always --name registry -v $(pwd) /etc/letsencrypt/live/vmreg.com:/etc/letsencrypt/live/vmreg.com -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 -e REGISTRY_HTTP_TLS_CERTIFICATE=/etc/letsencrypt/live/vmreg.com/domain.crt -e REGISTRY_HTTP_TLS_KEY=/etc/letsencrypt/live/vmreg.com/domain.key -p 5000:5000 registry:2

在我的数据库机器上,我可以正常登录: echo "password" | docker login -u username --password-stdin vmreg.com:5000 echo "password" | docker login -u username --password-stdin vmreg.com:5000

但是在我的website machine上,我得到x509: certificate signed by unknown authority当我尝试登录时

唯一的区别是我的website machine也有自己的letsencrypt域设置。 我不明白为什么我会收到这个错误。 有可能发生冲突吗?

我在网上找到的解决方案都在谈论复制证书,但是 1)我没有在我的database machine上复制任何证书,并且 2)我不明白为什么我需要将证书从注册表服务器复制到客户端; 这对我来说毫无意义,因为当我更新我的证书时会发生什么

但是在我的网站机器上,我得到 x509: certificate signed by unknown authority 当我尝试登录时

在建立新的 Docker 注册表(通常是基于Nexus3的注册表)时,我总是必须遵循“使用证书验证存储库客户端”。

这意味着:

/etc/docker/certs.d$ mkdir vmreg.com
/etc/docker/certs.d$ cp /etc/letsencrypt/live/vmreg.com/domain.crt vmreg.com/

看起来您缺少最新的证书包,并且 LetsEncrypt 在其原始提供商的证书过期后不得不更新其根 CA。 这通常在 Debian 上通过运行来处理:

apt-get update
apt-get install ca-certificates

但是,如果这不能解决问题,可能是因为 Debian 的旧版本。 请参阅描述如何解决它的这篇 SF 帖子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM