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

Met*_*lus 9 docker

我正在尝试设置一个私有 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 v2 WARN[0015] 获取 v2 时出错注册表:获取https://docker.squadwars.org/v2/:x509:由未知机构签名的证书错误 [0015] 错误后尝试拉取下一个端点:获取https://docker.squadwars.org/v2/:x509 :由未知机构签署的证书

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

我可以像这样使用curl:

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

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

docker 文档说,如果仍然有问题,您应该在操作系统级别添加证书。我已经按照说明这样做了:

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

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

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

jaf*_*mlp 5

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

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

{
  "insecure-registries" : ["https://docker.squadwars.org"]
}
Run Code Online (Sandbox Code Playgroud)

请注意,“.org”后面没有尾随“/”,这可能会导致 docker 失败。

然后通过systemd重新启动守护进程:

sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)


Met*_*lus 3

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

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

和这里:

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

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

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

这对我不起作用。除了有关签署客户端密钥的部分之外。那行得通。