繁体   English   中英

Docker 私有注册表:x509:由未知权威签名的证书

[英]Docker Private Registry: x509: certificate signed by unknown authority

我正在尝试设置一个私有 docker 注册表,由反向 nginx 代理保护,该代理通过客户端证书验证用户。

我得到的错误是:

x509:由未知机构签署的证书

根据文档,您应该能够将证书添加到 /etc/docker/certs.d/ 中,我已经这样做了。 Docker 似乎看到了证书的位置:

EBU[0015] 调用 POST /v1.24/images/create?fromImage=docker.squadwars.org%2Froster&tag=latest DEBU[0015] hostDir: /etc/docker/certs.d/docker.squadwars.org DEBU[0015]证书:/etc/docker/certs.d/docker.squadwars.org/client.cert DEBU[0015] 密钥:/etc/docker/certs.d/docker.squadwars.org/client.key DEBU[0015] crt: /etc/docker/certs.d/docker.squadwars.org/docker.squadwars.org.crt DEBU[0015] 主机目录:/etc/docker/certs.d/docker.squadwars.org DEBU[0015] 证书:/etc /docker/certs.d/docker.squadwars.org/client.cert DEBU[0015] 密钥:/etc/docker/certs.d/docker.squadwars.org/client.key DEBU[0015] crt:/etc/docker /certs.d/docker.squadwars.org/docker.squadwars.org.crt DEBU[0015] 试图从https://docker.squadwars.org/roster v2 中拉取 docker.squadwars.org/roster v2 WARN[0015] 获取 v2 时出错注册表:获取https://docker.squadwars.org/v2/:x509 :由未知机构签名的证书 ERRO[0015] 尝试下一个端点进行拉取错误:获取https://docker.squadwars.org/v2/:x509 : 由 unkn 签署的证书自己的权威

我还尝试将证书文件从 mydomain.org 重命名为简单的“ca.crt”,调试日志再次显示它可以看到,但没有任何效果。

我可以像这样使用 curl:

curl --key client.key --cert client.cert https://docker.squadwars.org/

我还可以向 curl 添加 --cacert 选项,无论哪种方式都有效。

docker 文档说如果还是有问题,应该在 OS 级别添加证书。 我已经按照说明这样做了:

(这可能就是为什么我不需要 -cacert 和 curl 的原因,虽然我很困惑,因为我已经删除了证书但 curl 仍然有效)

这让我发疯,任何帮助将不胜感激!

编辑:我忘了补充一点,最初我的证书的 FQDN 是错误的,但现在是“docker.squadwars.org”

我通过首先创建自己的证书颁发机构来使其工作,如下所述:

如何使用 openssl 创建自签名证书?

在这里:

您如何与您的证书颁发机构签署证书签名请求?

我希望能够给出更好的答案,但我遵循了此处的说明:

https://arcweb.co/securing-websites-nginx-and-client-side-certificate-authentication-linux/

它对我不起作用。 除了关于签署客户端密钥的部分。 那奏效了。

我可以用两种不同的方式解决这个错误

a) 将 OS DTR 证书添加到您的 TLS 存储(推荐)。
b) 在 docker 中允许不安全的注册表,在 Ubuntu 中使用它时,只需添加一个名为 /etc/docker/daemon.json 的文件,内容如下:

{
  "insecure-registries" : ["https://docker.squadwars.org/"]
}

在我的情况下,这里任何建议的方法都不起作用。
最终我发现我安装了一个安全客户端,它就像一个“中间人”,并用自己的证书重新签署了所有流量。
为了解决它,我必须下载它的证书并将其安装在容器内:

Docker go 映像 - 无法获取 - x509:由未知机构签名的证书

暂无
暂无

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

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