我正在尝试设置一个私有 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”
docker ×1