【问题标题】:Where to add client certificates for Docker for Mac?在哪里为 Docker for Mac 添加客户端证书?
【发布时间】:2017-04-10 21:54:19
【问题描述】:

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

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

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

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

所以我想我会尝试通过这样做将证书放入虚拟机本身:

docker-machine ssh 默认

这导致 docker 抱怨: 来自守护进程的错误响应:crypto/tls: private key does not match public key

我不相信我的密钥对有什么问题,而且我已经在 linux 上完成了同样的设置(要容易得多)。

【问题讨论】:

    标签: macos docker ssl tls1.2


    【解决方案1】:

    4 年后,Google 仍然把我带到这里。

    我在官方文档中找到了答案: 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 应用程序启动时,会复制 将 Mac 上的 ~/.docker/certs.d 文件夹复制到 /etc/docker/certs.d Moby 上的目录(Mac 的 Docker xhyve 虚拟机)。

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

    【讨论】:

    【解决方案2】:

    自签名 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
    

    【讨论】:

      猜你喜欢
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2018-08-15
      • 2017-10-18
      • 2015-10-26
      • 2018-05-27
      相关资源
      最近更新 更多