Moby: 访问私有注册表:x509:由未知机构签名的证书

创建于 2014-10-30  ·  39评论  ·  资料来源: moby/moby

我按照此处使用 nginx 设置了 docker-registry。

我运行'docker login',得到这个错误:

# docker login -u docker -p docker -e [email protected] https://dev.registry.com
2014/10/30 11:12:08 Error response from daemon: Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority

docker 守护进程的输出:

[debug] server.go:1181 Calling POST /auth
[info] POST /v1.15/auth
[47687bb1] +job auth()
[debug] endpoint.go:109 Error unmarshalling the _ping RegistryInfo: json: cannot unmarshal bool into Go value of type registry.RegistryInfo
[debug] endpoint.go:113 Registry version header: '0.7.1'
[debug] endpoint.go:116 RegistryInfo.Version: "0.7.1"
[debug] endpoint.go:119 Registry standalone header: 'True'
[debug] endpoint.go:127 RegistryInfo.Standalone: true
[debug] endpoint.go:109 Error unmarshalling the _ping RegistryInfo: json: cannot unmarshal bool into Go value of type registry.RegistryInfo
[debug] endpoint.go:113 Registry version header: '0.7.1'
[debug] endpoint.go:116 RegistryInfo.Version: "0.7.1"
[debug] endpoint.go:119 Registry standalone header: 'True'
[debug] endpoint.go:127 RegistryInfo.Standalone: true
Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority
[47687bb1] -job auth() = ERR (1)
[error] server.go:1207 Handler for POST /auth returned error: Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority
[error] server.go:110 HTTP Error: statusCode=500 Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority

我检查了代码。 我认为功能登录可能需要“tlsConfig”
https://github.com/docker/docker/blob/master/registry/auth.go#L163

就像
https://github.com/docker/docker/blob/master/registry/registry.go#L49

# docker --version
Docker version 1.3.0, build c78088f
# curl --cacert ca.pem https://dev.registry.com/v1/_ping                 
true
# curl --cacert ca.pem -u docker:docker https://dev.registry.com/v1/users/
"OK"

# curl -u docker:docker https://dev.registry.com/v1/users/                
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

最有用的评论

谢谢,这对我也有用。 Ubuntu/Debian 上的等效步骤:

  1. 将 CA 证书复制到/usr/local/share/ca-certificates
  2. 须藤更新-ca-证书
  3. 须藤服务泊坞窗重启

不过,这里仍然存在一个错误。 文档说要在/etc/docker/certs.d/<registry>安装 CA 证书,显然这还不够。 实际上,在全局安装证书后,我删除了/etc/docker/certs.d的证书,重新启动了 Docker,它仍然有效。

所有39条评论

@hustcat从 Docker 1.3.1 开始,您可以执行--insecure-registry dev.registry.com:5000您可以将 5000 替换为您的注册表正在侦听的任何端口。

我现在结束这个,但如果这不能解决你的问题,请在评论中告诉我们。

我把这个留在这里 b/c 我花了几分钟才弄明白,可能会节省一些人的时间。 命令将是:

%> docker --insecure-registry=docker-registry.example.com:8080 login https://docker-registry.example.com:8080

感谢您为 1.3 安装开关!

我面临同样的问题。 证书验证适用于 ping(和推/拉),但不适用于登录。

--insecure-registry标志是一种解决方法,而不是修复方法。 如果 CA 证书加载到/etc/docker/certs.d/<registry> ,则证书验证应该有效,但它没有。

我无法通过设置 --insecure-registry 使其工作,我在 RedHat 7 上使用 docker 1.3.2

[ root@ip-10-2-20-209 ec2-user]# docker --insecure-registry=qa.docker.repo 登录https://qa.docker.repo
用户名:qa
密码:
邮箱: [email protected]
2015/01/19 14:26:40 来自守护进程的错误响应:服务器错误:发布https://qa.docker.repo/v1/users/ :x509:由未知机构签名的证书

当我使用生成的 ca.pem 文件时,curl 工作正常。

curl --cacert /home/ec2-user/ca.pem -u qa:xxxxx https://qa.docker.repo/v1/users/
“好的”

我在 docker 版本 1.3.2 和 opensuse 13.1 上遇到了同样的问题。 我什至尝试将 --cafile cacert.pem 静态传递给每个 curl 调用(因为我假设 docker 在内部只使用 curl),但是,这也没有帮助。

任何帮助将非常感激。

谢谢。
马里奥

在我发现这个问题之前,我打开了#10150。 他们似乎是同一个问题。

我似乎遇到了同样的问题。 Archlinux 客户端 1.4.1 和从官方 docker 容器运行的注册表。 有人有什么想法吗?

如果您已全局安装证书(通过 ca-certificates),请确保重新启动 docker,因为它不会重新加载全局 ssl 证书。 也就是说,我的仍然无法正常工作,但我在工作中遇到了这个问题:)

谢谢 grimmy,这对我有用,它终于奏效了。 我做了:

  1. http://curl.haxx.se/docs/caextract.html获取 cacert.pem
  2. 将 cacert.pem 文件复制到 /etc/pki/trust/anchors/
  3. 须藤更新-ca-证书
  4. 须藤 systemctl 泊坞窗停止
  5. 须藤 systemctl docker start

马里奥

谢谢,这对我也有用。 Ubuntu/Debian 上的等效步骤:

  1. 将 CA 证书复制到/usr/local/share/ca-certificates
  2. 须藤更新-ca-证书
  3. 须藤服务泊坞窗重启

不过,这里仍然存在一个错误。 文档说要在/etc/docker/certs.d/<registry>安装 CA 证书,显然这还不够。 实际上,在全局安装证书后,我删除了/etc/docker/certs.d的证书,重新启动了 Docker,它仍然有效。

+1 重新打开它,正如@rhasselbaum提到的

--insecure-registry 消失了吗?

$ docker --version
Docker version 1.8.2, build 0a8c2e3

$ docker --insecure-registry
flag provided but not defined: --insecure-registry
See 'docker --help'.

我们现在应该用什么?

在 docker 配置文件中,您可以通过查看来检查它是否已设置
您应该看到 --insecure-registry 标志的 docker 进程

2015 年 9 月 16 日,星期三,凌晨 3:01,Chris Withers通知@github.com
写道:

--insecure-registry 消失了吗?

$ docker --version
Docker 版本 1.8.2,构建 0a8c2e3

$ docker --insecure-registry
提供但未定义的标志:--insecure-registry
请参阅“docker --help”。

我们现在应该用什么?


直接回复此邮件或在 GitHub 上查看
https://github.com/docker/docker/issues/8849#issuecomment -140693481。

我对 docker pull 命令遇到了同样的错误,我认为以下应该有效。
将 SSL 证书(即“.crt”文件)复制到目录

须藤cp foo.crt /usr/share/ca-certificates/extra/foo.crt
让 Ubuntu 将“.crt”文件相对于 /usr/share/ca-certificates 的路径添加到 /etc/ca-certificates.conf

sudo dpkg-reconfigure ca-certificates

如果您的机器状态不重要,那么您可以运行docker-machine rm <machine-name>并创建另一个;)

如果您使用 LetsEncrypt 并且不想在没有适当 TLS 的情况下运行任何内容,请确保提供包括中间体在内的完整证书链(即 REGISTRY_HTTP_TLS_CERTIFICATE=.../fullchain.pem),您可能会在 Chrome 中看到绿色,同时仍然获得来自 Docker 的这个错误。

干杯!

在 Ubuntu 上。 如果您遇到错误:

  • x509:无法验证 [IP 地址或域名] 的证书,因为它不包含任何 IP SAN

在 Docker 注册表中,必须使用 subjectAltName 编译证书,如下所述:
https://docs.docker.com/engine/security/https/

为方便起见,代码如下:
$ echo subjectAltName = IP:10.10.10.20,IP:127.0.0.1 > extfile.cnf
$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
-CAcreateserial -out server-cert.pem -extfile extfile.cnf

请注意,我能够使用以下命令检查证书中是否存在主题备用名称:
openssl x509 -in certificate.crt -text -noout

但是,在 Ubuntu 14 客户端(即 Docker 引擎)上
这个错误是由
x509:由未知机构签署的证书

对于使用 Ubuntu 14 的人。
用于 Docker 引擎的配置文件(我想用来连接到 Docker Registry):
/etc/default/docker

在那里,您需要指定 docker 选项:
DOCKER_OPTS = “ -不安全的注册表myinsecure。的COM:5000

然后重新启动守护进程(如果您的用户不允许启动 docker 服务,请添加 sudo):
$ [sudo] 服务 docker 重启

该值不需要是域名,只需与您注册的证书匹配即可; 我有一个带端口的 IP 地址,这有效......(即 100.100.100.100:100)

所有这一切都花了我一天的时间,所以,我发布此信息希望对其他人有用......

@JazzDeben感谢您的评论! 很有用 ! 我不确定如何使用 Let's Encript certbot 生成的证书来做到这一点。
我在注册表服务器中收到此错误

tls: client didn't provide a certificate

Chrome 抱怨ERR_BAD_SSL_CLIENT_AUTH_CERT
如果我包括

  tls:
...
    clientcas:
      - /path/to/ca.pem

@cjw296对于 RHEL7.2,我编辑了文件/usr/lib/systemd/docker.service ,并在ExecStart行中添加了--insecure-registry=your.docker.registry.com

< ExecStart=/usr/bin/dockerd
---
> ExecStart=/usr/bin/dockerd --insecure-registry=your.docker.registry.com

然后我运行sudo systemctl daemon-reload来获取配置更改,然后是sudo systemctl restart docker 。 现在它起作用了。

老实说,我仍然是一个 systemd 菜鸟,可能有更好的方法可以更干净地做到这一点。 但是我为此苦苦挣扎了太久,并想发布一个解决方法。 感谢@cdub50带领我走向正确的方向。

@david-drinn 对于 Fedora 25,我做了类似的事情,但由于 docker 守护进程配置(在/usr/lib/systemd/system/docker.service )从配置文件中获取源设置,我在/etc/sysconfig/docker进行了更改:

< # INSECURE_REGISTRY='--insecure-registry='
---
> INSECURE_REGISTRY='--insecure-registry=your.docker.registry.com'

如果 curl 正常工作而 docker 不工作,您可以:
o 创建“/etc/docker/certs.d//..." 目录和文件(仅对私有注册表有效?)
o 在您的“/etc/docker/daemon.json”文件中添加一个“tlscert”条目,以便 dockerd 使用与 curl 相同的证书。

对于那些遇到此问题并且您拥有自签名证书并且您不想使用“insecure-registry”指令的人,那么您需要将自签名证书加载到/etc/docker/certs.d/{host}/ 。 加载它们后记得重新启动 docker 守护进程。 再详细说明一下.....

如果您的注册表托管在https://exampleregistry.com,您应该有一个名为/etc/docker/certs.d/exampleregistry.com其中包含您的自签名证书。 现在您将能够在没有 x509 错误的情况下执行docker login exampleregistry.com
现在这里有一个警告,假设您出于某种原因想要在登录命令中明确定义端口,例如docker login exampleregistry.com:443 (这没有任何意义,但这只是一个示例)然后您需要确保您的自签名证书位于名为/etc/docker/certs.d/exampleregistry.com:443/的文件夹中。 Docker 仅在使用端口时才对基于主机名的证书解析做出任何假设。 您必须通过将自签名证书加载到包含您尝试访问的端口的文件夹名称中来实际提供每个端口的证书。

希望这可以为你们中的许多人节省大量使用端口连接到您的 docker 注册表的调试。

这在我的情况下没有解决:
我想为 nexus OSS 存储库使用自签名证书。 但我收到此错误:来自守护进程的错误响应:获取 https://:10250/v1/users/: x509: 由未知机构签署的证书

我已将 .crt 文件放在我的 ubuntu 16.04 om intel 机器上的 /etc/docker/certs.d 和 /usr/share/ca-certificates 中。 然后我运行了 update-ca-certificates 并重新启动了 docker。 这是我的证书文件 nexus.cert:
$ openssl x509 -in nexus.crt -text

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=IN, ST=State, L=City, O=XYZ, OU=x, CN=<mydomain.com>
        Validity
            Not Before: Jul 17 20:28:26 2017 GMT
            Not After : Jul 17 20:28:26 2018 GMT
        Subject: C=IN, ST=State, L=City, O=XYZ, OU=x, CN=<mydomain.com>
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:b8:2c:97:c2:e4:bf:7a:e1:49:22:9b:a2:90:7a:
                    3a:de:3d:d3:f5:e9:c9:8b:9b:c8:13:37:4b:36:32:
                    4f:a7:0d:b9:53:4c:f4:10:fa:e7:d2:64:a5:e9:0a:
                    32:49:c3:aa:f8:2c:27:82:94:85:c3:11:07:a7:d0:
                    6c:0a:4a:45:66:94:cb:d3:27:28:cd:58:43:5b:f9:
                    e1:66:97:52:81:be:03:53:d5:e1:84:0c:4f:89:fd:
                    78:6d:8f:88:cf:29:af:6d:14:2e:2e:dc:d4:f3:87:
                    1c:73:5e:35:cb:d2:95:58:20:55:c0:f5:89:e1:40:
                    64:16:cd:25:a8:bd:6b:6a:9c:21:b0:97:d2:67:63:
                    5c:3c:4a:2c:21:1a:72:3a:68:c6:a0:e2:ea:4d:f8:
                    db:bd:02:81:93:db:60:51:ad:6e:bf:d7:7d:45:43:
                    95:e1:a5:d7:de:36:76:7c:a4:d7:4a:7f:b2:b1:98:
                    75:7d:27:2c:1d:ad:03:1b:5f:8a:ac:12:5e:76:9c:
                    2a:f7:03:b0:51:6c:23:a4:df:08:1f:02:0c:42:b6:
                    ff:7f:33:16:b0:86:fc:92:e7:db:7a:3b:a2:70:30:
                    f4:79:fa:f1:0f:75:0f:32:69:79:97:73:f4:de:11:
                    3e:bf:f8:63:49:21:dc:02:c6:ef:de:91:74:03:6d:
                    21:56:2e:c6:04:d1:02:30:73:6e:52:c7:93:07:6c:
                    f9:98:ff:1c:cc:dd:da:c7:45:2e:7b:ab:04:33:fe:
                    39:6c:5d:d5:dd:46:ae:25:d6:fd:9d:01:ae:8a:e8:
                    14:18:cc:6e:64:e4:11:8a:ce:3d:30:56:6d:0c:a7:
                    83:90:6c:f5:14:36:16:39:cc:10:7a:db:35:f6:9c:
                    68:da:84:f6:9c:07:d0:3e:b7:52:54:03:75:9a:ae:
                    eb:79:b5:5f:cb:10:cf:25:08:ae:f7:b3:13:79:f4:
                    4a:98:72:08:e3:23:e2:22:a1:31:47:41:ec:a4:76:
                    42:db:1c:46:31:3c:a2:14:14:94:bf:4f:1e:1f:85:
                    a0:9c:4c:3d:af:92:7a:90:d1:ad:23:f0:ea:3e:7d:
                    b4:21:79:f9:82:3a:16:04:42:60:b8:5d:15:1c:48:
                    9b:1e:b5:9b:0d:1f:aa:56:aa:a2:1a:a5:6f:ef:ab:
                    2a:22:6d:05:19:c0:2b:dc:46:c4:c2:4a:f8:89:25:
                    fc:dc:e6:ab:7b:8a:76:de:47:a3:e2:00:0e:d7:e8:
                    bd:86:86:d3:8d:6b:56:63:bf:40:1e:31:d7:74:fe:
                    63:fc:7e:e2:9f:21:31:1d:39:2a:44:a5:56:fd:dd:
                    66:5e:c2:4f:94:c7:ee:26:89:1a:d1:6b:13:00:f6:
                    4f:72:9b
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         25:26:77:55:50:0a:66:39:5f:79:c7:5e:af:5f:54:e2:92:6f:
         62:e5:90:3a:0f:de:9b:7a:02:df:66:47:c5:71:61:91:c4:74:
         ba:0e:55:34:47:0b:72:c5:f5:27:5d:d0:d6:06:a9:f7:5c:d5:
         41:30:4c:0f:0b:3a:3c:64:13:a0:28:9b:10:92:0e:c8:eb:e8:
         0f:00:ba:54:9d:d4:7a:8c:cd:f7:91:a9:55:69:0f:9b:12:77:
         e9:f2:28:c8:cb:07:d4:ab:a4:eb:b2:3d:ae:b4:6d:7a:15:85:
         cb:07:f6:e3:6b:58:1c:26:0a:ad:d5:e6:7c:b7:e7:19:6c:d1:
         31:80:5e:cb:17:85:88:a2:6c:fc:fe:3c:28:1f:f9:87:a6:0f:
         f6:85:d2:c0:76:25:fb:52:2f:8a:99:0c:88:4e:bd:84:6b:da:
         81:b4:41:f1:bf:1c:e7:7d:93:a5:e2:d7:66:8a:63:bf:9c:c4:
         ad:ea:cb:c4:c6:7d:1f:95:35:87:60:8b:e8:23:e8:4e:36:43:
         5e:86:de:c4:35:e0:29:7a:93:90:a4:9b:c3:d1:8e:13:55:9f:
         ea:ab:52:0a:a8:a0:54:cf:f4:5e:ff:12:40:09:43:3c:e7:55:
         e7:c1:de:62:ce:21:39:f5:d3:51:7a:92:f2:b2:3c:75:8c:1f:
         bd:aa:13:63
-----BEGIN CERTIFICATE-----
MIIEPDCCAyQCAQEwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCSU4xEjAQBgNV
BAgTCUthcm5hdGFrYTESMBAGA1UEBxMJQmFuZ2Fsb3JlMQwwCgYDVQQKEwNJQk0x
DDAKBgNVBAsTA2x0YzERMA8GA1UEAxMIbHRjeC5jb20wHhcNMTcwNzE3MjAyODI2
WhcNMTgwNzE3MjAyODI2WjBkMQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0
YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDDAKBgNVBAoMA0lCTTEMMAoGA1UECwwD
bHRjMREwDwYDVQQDDAhsdGN4LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBALgsl8Lkv3rhSSKbopB6Ot490/XpyYubyBM3SzYyT6cNuVNM9BD659Jk
pekKMknDqvgsJ4KUhcMRB6fQbApKRWaUy9MnKM1YQ1v54WaXUoG+A1PV4YQMT4n9
eG2PiM8pr20ULi7c1POHHHNeNcvSlVggVcD1ieFAZBbNJai9a2qcIbCX0mdjXDxK
LCEacjpoxqDi6k34270CgZPbYFGtbr/XfUVDleGl1942dnyk10p/srGYdX0nLB2t
AxtfiqwSXnacKvcDsFFsI6TfCB8CDEK2/38zFrCG/JLn23o7onAw9Hn68Q91DzJp
eZdz9N4RPr/4Y0kh3ALG796RdANtIVYuxgTRAjBzblLHkwds+Zj/HMzd2sdFLnur
BDP+OWxd1d1GriXW/Z0BroroFBjMbmTkEYrOPTBWbQyng5Bs9RQ2FjnMEHrbNfac
aNqE9pwH0D63UlQDdZqu63m1X8sQzyUIrvezE3n0SphyCOMj4iKhMUdB7KR2Qtsc
RjE8ohQUlL9PHh+FoJxMPa+SepDRrSPw6j59tCF5+YI6FgRCYLhdFRxImx61mw0f
qlaqohqlb++rKiJtBRnAK9xGxMJK+Ikl/Nzmq3uKdt5Ho+IADtfovYaG041rVmO/
QB4x13T+Y/x+4p8hMR05KkSlVv3dZl7CT5TH7iaJGtFrEwD2T3KbAgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBACUmd1VQCmY5X3nHXq9fVOKSb2LlkDoP3pt6At9mR8Vx
YZHEdLoOVTRHC3LF9Sdd0NYGqfdc1UEwTA8LOjxkE6AomxCSDsjr6A8AulSd1HqM
zfeRqVVpD5sSd+nyKMjLB9SrpOuyPa60bXoVhcsH9uNrWBwmCq3V5ny35xls0TGA
XssXhYiibPz+PCgf+YemD/aF0sB2JftSL4qZDIhOvYRr2oG0QfG/HOd9k6Xi12aK
Y7+cxK3qy8TGfR+VNYdgi+gj6E42Q16G3sQ14Cl6k5Ckm8PRjhNVn+qrUgqooFTP
9F7/EkAJQzznVefB3mLOITn101F6kvKyPHWMH72qE2M=
-----END CERTIFICATE-----

@abdasgupta :你能“卷曲”你的回购吗?
如果是这样,请检查 curl 正在使用哪个证书的文件,并编辑您的 daemon.json 文件以使用相同的文件。
就我而言,它是:
[ root@localhost ]# cat /etc/docker/daemon.json
{“不安全的注册表”:[“注册表1.docker.io/v2:5000”],
“调试”:真,
"tlscert": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" <<<<======
}

我不想使用那个不安全的注册表……没有它就不能运行吗?? 此外,证书与回购相同.. cz 我从那里复制的。

我想你可以在没有不安全注册表的情况下运行。 你能用“curl”命令访问你的仓库吗?
此致。

De : Abhishek Dasgupta [mailto:[email protected]]
特使 : mardi 18 juillet 2017 18:30
À : moby/moby
抄送:弗雷德里克·卡斯特兰; 评论
Objet : Re: [moby/moby] 访问私有注册表:x509:由未知机构签名的证书 (#8849)

我不想使用那个不安全的注册表……没有它就不能运行吗?? 此外,证书与回购相同.. cz 我从那里复制的。


您收到此消息是因为您发表了评论。
直接回复本邮件,在 GitHub 上查看https://github.com/moby/moby/issues/8849#issuecomment-316120117 ,或将线程静音https://github.com/notifications/unsubscribe-auth/ANgcLAxGE34n7fSByG0svUJry3vt2gaJC0spZV .

注意:本电子邮件(包括任何附件)可能包含私人、机密或法律特权信息或材料,仅供收件人使用。 如果您错误地收到了这封电子邮件,请将其从您的系统中删除,不要复制,并立即通过回复电子邮件通知发件人。 严禁未经授权使用或披露此消息。 STEF 不保证此传输的完整性,因此,如果消息被更改或伪造,或者任何病毒、拦截或对您的系统造成损坏,则 STEF 概不负责。

AVIS : Ce message (y compris toutes pièces jointes) peut contenir des informations privées,confidieelles et est pour l'usage du(es) seul(s) destinataire(s)。 Si vous avez reçu ce message par erreur, merci d'en avertir l'expéditeur par retour d'email immédiatement et de procéder à la de l'ensemble des éléments reçus, dont vous ne devez garder aucune copie。 Toute 传播、利用 ou copie de ce message ou des renseignements qu'il contient par une personne autre que le(les) destinataire(s) désigné(s) est interdite。 STEF ne garantit pas l'intégrité de cette Transmission et ne saurait être tenu responsable du message, de son contenu, de toute modify ou falsification, d'uneinterception ou de dégâts à votre système。

@abdasgupta ,我注意到17.03.1~ce-0~ubuntu-xenial版本不起作用,但17.06.0~ce-0~ubuntu版本有效。

我将 crt 放入/usr/local/share/ca-certificates/my-org/my-domain.crt ,然后执行sudo update-ca-certificatessudo systemctl restart docker

您可以尝试按照https://docs.docker.com/v17.03/engine/security/certificates/ 中的说明操作吗? Docker 1.13 及更高版本也应该从系统默认值中读取证书,否则;

自定义证书是通过在/etc/docker/certs.d下创建一个目录来配置的,该目录使用与注册表的主机名相同的名称(例如, localhost )。 所有*.crt文件都作为 CA 根添加到此目录中。

配置证书后,可能需要重启守护进程

对于任何在/etc/docker/certs.d解决方案中挣扎的人,请确保您的目录名称包含注册表端口。 所以/etc/docker/certs.d/myregistry.net:8443

在 Photon OS 上对我来说效果很好。

我一直在努力解决这个错误,直到我想我将文件命名为/etc/docker/certs.d/myregistry/ ca.pem而不是/etc/docker/certs.d/myregistry/ ca.crt

我在 Windows 上遇到了同样的问题,直到我查看了文档,它建议在 Windows 资源管理器中使用我的证书颁发机构( ca.pem重命名为ca.crt )和Right-Click > Install Certificate并选择当前用户的受信任根证书颁发机构。 重新启动 docker 并且它起作用了。

在coreos中,我不得不编辑
/etc/docker/daemon.json
{ "insecure-registries": ["registry:8443"] }
然后sudo systemctl restart docker

提示:如果您通过代理访问您的私有存储库,您可能会遇到相同的错误消息,禁用代理或为私有注册主机配置异常(可能是 NO_PROXY)。

我在 Rancher 上将 docker-registry 作为 Kubernetes POD 运行。 我已经配置了一个 L7 Ingress 并且 SSL 证书位于那里。 当我从 Web 浏览器访问时,SSL 没有问题,并且登录凭据工作正常。 但是如果我运行 docker login 命令,我会得到 x509: 由未知机构签名的证书,我相信它正在尝试使用伪造的 SSL 自签名证书获取默认入口后端。 我正在我的计算机上重新启动 docker 以查看是否有帮助。

它曾经工作过......我对我的入口做了一个小改动以支持两个主机名的新 SSL 证书
在我的笔记本电脑上重新启动 docker 后仍然存在同样的问题:(

嗨兄弟.. 这个问题和我的问题一样。
Openshift 无法为 nexus 存储库导入图像,语法是
oc import-image nexus- coba:3.5 --from=192.168.250.250:8083/node-nexus --confirm
错误:标签最新失败:发生内部错误:获取https://192.168.250.250 :8083/v2/: x509: 证书由未知机构签名
imagestream.image.openshift.io/nexus-coba 导入时出错
此解决方案仅在 --confirm 后添加 --insecure。

oc import-image nexus- coba:3.5 --from=192.168.250.250:8083/node-nexus --confirm --insecure

谢谢,这对我也有用。 Ubuntu/Debian 上的等效步骤:

1. Copy CA cert to `/usr/local/share/ca-certificates`.

2. sudo update-ca-certificates

3. sudo service docker restart

不过,这里仍然存在一个错误。 文档说要在/etc/docker/certs.d/<registry>安装 CA 证书,显然这还不够。 实际上,在全局安装证书后,我删除了/etc/docker/certs.d的证书,重新启动了 Docker,它仍然有效。

非常感谢! 我所做的正是你所描述的,从官方文档中拉扯我的头发是错误的...... :)

我不相信! 5 年后,仍然如此,感谢您的解决方案。

谢谢,这对我也有用。 Ubuntu/Debian 上的等效步骤:

1. Copy CA cert to `/usr/local/share/ca-certificates`.

2. sudo update-ca-certificates

3. sudo service docker restart

不过,这里仍然存在一个错误。 文档说要在/etc/docker/certs.d/<registry>安装 CA 证书,显然这还不够。 实际上,在全局安装证书后,我删除了/etc/docker/certs.d的证书,重新启动了 Docker,它仍然有效。

这是否意味着我必须在 nginx 中的注册表 docker 映像中安装证书?

Docker-Desktop Icon -> Preferences -> Daemon -> "Insecure registries",点击+图标
添加您的存储库“your-registry.com”
点击“应用并重启”

image

有关更多信息,请参阅https://forums.docker.com/t/docker-private-registry-x509-certificate-signed-by-unknown-authority/21262/6

此页面是否有帮助?
0 / 5 - 0 等级