繁体   English   中英

docker登录失败-> x509:证书由未知授权签署。.“ crypto / rsa:验证错误”

[英]docker login fails -> x509: certificate signed by unknown authority .. “crypto/rsa: verification error”

我已经创建了一个由NGINX代理的私有Docker注册表。 NGINX是ssl终止的位置。

为了解决这个问题,我使用my-domain.com来混淆我的域名。

我正在使用已安装boot2docker的OSX 10.10.3。 但是应该注意,Vagrant + CoreOS + Docker的工作流不应该涉及boot2docker,因为我在VM(CoreOS)而不是Host(OSX)中遇到问题。

我正在使用Vagrant从此启动本地CoreOS VM。 然后,我将ssh放入该VM的实例,并尝试发出以下命令

$ docker login docker.my-domain.com

然后会提示我输入用户名,密码和电子邮件; 并且提供我的详细信息。

注意:我能够按预期在主机OS(OSX)中发出上述命令,并能够成功登录(生成〜/ .dockercfg文件)。

我收到以下错误:

FATA[0008] Error response from daemon: v1 ping attempt failed with error: Get https://docker.my-domain.com/v1/_ping: 
x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to 
verify candidate authority certificate "*.my-domain.com"). If this private registry supports only HTTP or HTTPS 
with an unknown CA certificate, please add `--insecure-registry docker.my-domain.com` to the daemon's 
arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; 
simply place the CA certificate at /etc/docker/certs.d/docker.my-domain.com/ca.crt

我已经从我的自签名中复制了我的cart。 我可以确认CoreOS能够通过SSL正确连接到我的服务器。 我跑了这个命令

openssl s_client -CAfile /etc/docker/certs.d/docker.my-domain.com/ca.crt -connect docker.my-domain.com:443

然后我得到了预期的“验证返回码:0(确定)”。 这使我相信它的docker似乎有问题。

$ docker version (from within CoreOS VM)
Client version: 1.6.1-rc2
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): 17f157d-dirty
OS/Arch (client): linux/amd64
Server version: 1.6.1-rc2
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): 17f157d-dirty
OS/Arch (server): linux/amd64

毕竟,我不确定接下来需要尝试什么。 任何和所有帮助表示赞赏!

事实证明这是一个两部分的问题。 第一个问题是,当我将证书文件(ca.crt)放在相对的/ etc / ssl / certs /文件夹中时,我没有使用.pem扩展名重命名原始文件。 这意味着当我运行update-ca-certificates在客户端计算机上安装我的自定义证书时,该证书未被识别。 这是第二个主要问题。

我没有使用正确的证书文件。 一旦我使用了正确的证书文件,并且将文件重命名为.pem扩展名,我就运行了update-ca-certificates,然后发出了login命令,它就起作用了。

我假设我必须在主机OSX机器上正确安装了正确版本的证书,这就是为什么它可以在那儿工作但不在VM中工作的原因。

这对于遇到此问题的其他人来说非常有用。如果您使用的是中间证书,则docker认为ca.pem文件必须同时具有根证书和中间证书。 如果您使用的是客户端证书,那么几乎可以肯定,您也希望〜/ .docker / ca.pem文件中包含完整的证书链。

暂无
暂无

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

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