macos - 登录私有 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/,但无法解决问题。
你能告诉我如何生成这两个证书的组合吗?提前致谢!
解决方案
对我来说,重命名并将 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
推荐阅读
- sql - EF 核心代码首先迁移自动为表添加 db_owner 前缀
- android - Android:在 Android 应用中自动隐藏音量栏
- javascript - 从嵌套的对象数组中删除一个对象
- ssl - Kafka,为什么我在使用kafka-console-producer(或Kafkcat)进行测试时需要传递证书链而不仅仅是根ca
- ios - 无效的权利 Xcode
- android - 在 getview 中实现 SharedPreference
- python - Python Chartify 库:chromedriver 权限问题
- r - 如何从 dta 文件中读取数值作为 R 中的因子(未使用的参数错误)?
- r - R中的重新编码列
- jenkins - 通过 Jenkins 管道将文件从主机笔记本电脑(mac)复制到动态创建的 kubernetes pod