首页 > 解决方案 > 登录私有 Docker 注册表时缺少客户端证书错误

问题描述

我正在尝试使用适用于 Mac 的 docker 社区版 18.06 登录到私有 docker 注册表,但是从 cli-docker 登录时出现此错误

来自守护进程的错误响应:缺少客户端证书 domain.cert for key domain.key

首先,我使用以下命令在 ~/.docker/certs.d/myprivaterepo:port 中安装了 CA 证书:

$ openssl genrsa -out client.key 4096
$ openssl req -new -x509 -text -key client.key -out client.cert

它给了我错误-

来自守护程序的错误响应:获取 https://myprivaterepo:port/v2/:服务不可用

然后我使用上面的命令生成了“.crt”格式的证书,它开始给我这个错误:

来自守护程序的错误响应:缺少客户端证书 client.cert for key client.key

我假设它需要一个密钥并且 .crt 和 .cert 证书都存在。我实际上尝试使用另一个密钥创建另一个 .cert 证书,但它给了我以下错误:

来自守护程序的错误响应:tls:私钥与公钥不匹配

我参考了 docker 文档 - https://docs.docker.com/engine/security/https/,但无法解决问题。

你能告诉我如何生成这两个证书的组合吗?提前致谢!

标签: macosdockerssl-certificateclient-certificatesdocker-registry

解决方案


对我来说,重命名并将 crt 文件放入 /usr/local/share/ca-certificates/ 有效:

# copy and rename the file
cp client.crt /usr/local/share/ca-certificates/<my-private-repo>:<port>.crt

# update certificates
sudo ca-update-certificates

# restart docker daemon
sudo service docker restart

推荐阅读