在哪里添加 Docker for Mac 的客户端证书?

Bub*_*dow 8 macos ssl docker tls1.2

我有一个 docker 注册表,我正在 nginx 代理后面访问该注册表,该代理使用客户端 ssl 证书进行身份验证。

当我尝试推送到此注册表时,我需要 docker 守护进程将客户端证书发送到 nginx。

根据: https: //docs.docker.com/engine/security/certificates/

应该有一个名为 /etc/docker 的目录,这些证书可以存放在其中。Docker for Mac 上不存在此目录。

所以我想我应该尝试将证书放入虚拟机本身中,方法是:

docker-machine ssh 默认

这导致 docker 抱怨:来自守护程序的错误响应:crypto/tls:私钥与公钥不匹配

我不相信我的密钥对有什么问题,而且我已经在 Linux 上完成了相同的设置(更容易),没有任何问题。

los*_*pos 6

四年后,谷歌仍然把我带到了这里。

我在官方文档中找到了答案: https://docs.docker.com/desktop/mac/#add-client-certificates

引用来源:

您可以将客户端证书放入 ~/.docker/certs.d/<MyRegistry>:<Port>/client.cert和 中~/.docker/certs.d/<MyRegistry>:<Port>/client.key

当 Docker for Mac 应用程序启动时,它会将 ~/.docker/certs.dMac 上的文件夹复制到/etc/docker/certs.d Moby(Docker for Macxhyve虚拟机)上的目录。

  • 对钥匙串或目录进行任何更改后,您需要重新启动 Docker for Mac~/.docker/certs.d才能使
    更改生效。
  • 注册表不能被列为不安全注册表(请参阅Docker Engine)。Docker for Mac 将忽略不安全注册表下列出的证书
    ,并且不会发送客户端证书。
    尝试从注册表中拉取的命令(例如 docker run)将
    在命令行以及注册表上生成错误消息。


bba*_*iee 1

自签名 TLS CA 可以这样安装,您的证书可能位于同一目录中。

sudo mkdir -p /Applications/Docker.app/Contents/Resources/etc/ssl/certs
sudo cp my_ca.pem /Applications/Docker.app/Contents/Resources/etc/ssl/certs/ca-certificates.crt
Run Code Online (Sandbox Code Playgroud)