我正在尝试设置一个私有 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”
我可以用两种不同的方式解决这个错误
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)
我首先通过创建自己的证书颁发机构来使其工作,如下所述:
和这里:
我希望能够给出更好的答案,但我遵循此处的说明:
https://arcweb.co/secure-websites-nginx-and-client-side-certificate-authentication-linux/
这对我不起作用。除了有关签署客户端密钥的部分之外。那行得通。
| 归档时间: |
|
| 查看次数: |
28656 次 |
| 最近记录: |