如何在Mac中安装SSL / TLS证书CA文件以进行安全(HTTPS)远程存储库docker登录

时间:2018-07-04 11:18:26

标签: macos docker ssl openshift docker-registry

我已经设置或已提供到远程Docker注册表的安全URL(HTTPS)。我需要执行docker登录到远程注册表中,以便能够推送本地构建的Docker映像。

命令类似于:

docker login -u myUser https://registry.mydomain.example.com

但是,docker登录失败并显示x509证书验证错误,例如:

Error response from daemon: Get https://registry.mydomain.example.com/v2/: x509: certificate signed by unknown authority


我正在使用macOS / OS X,如何使我的本地Docker(Docker客户端)接受远程存储库的TLS证书进行HTTPS通信?

此外,一旦安全HTTPS连接正常工作,在编写Dockerfile并在本地测试我的映像正常工作之后,如何构建映像并将其推送到远程存储库?

1 个答案:

答案 0 :(得分:1)

与Docker文档的链接中特别提到的不同,Linux / Unix指令也适用于macOS / OS X:
https://docs.docker.com/engine/security/certificates/

我获得了以下使用macOs High Sierra 10.13.5(17F77)的MacBook Pro的使用说明。
Docker客户端(本地Docker)版本:18.03.1-ce

通过终端命令将远程注册表管理员提供的证书颁发机构(CA)文件放入特定的文件夹结构中:

sudo mkdir -p /etc/docker/certs.d/registry.mydomain.example.com
sudo cp ca.crt /etc/docker/certs.d/registry.mydomain.example.com

注意:如果您使用带有端口的URL连接到注册表,则该端口需要包含在certs.d文件夹下的文件夹名称中。该URL也可以采用IP形式:

sudo mkdir -p /etc/docker/certs.d/registry.mydomain.example.com:443
sudo mkdir -p /etc/docker/certs.d/172.123.123.1:443

编辑添加!
我与一位同事对此进行了测试,结果发现需要将CA文件添加到macOS钥匙串中(我以前也这样做过)。 It is currently unknown if the above /etc/docker steps are even required on Mac.我们使用本指南将ca.crt文件导入“钥匙串”(在“证书”菜单中显示为“不可信”)。
https://www.sslsupportdesk.com/how-to-import-a-certificate-into-mac-os/

然后,重新启动本地Docker。

此后,Docker登录应该正常工作。如果仍然出现x509未知授权错误,则最好使用openssl命令针对CA文件验证远程注册表服务器证书的有效性(例如,通过使用浏览器导航到注册表URL来获取): https://www.sslshopper.com/article-most-common-openssl-commands.html

以下是使用OpenShift集成(原子)注册表的示例:

oc login https://registry.mydomain.example.com -u myUser --certificate-authority=ca.crt
docker login -u $(oc whoami) -p $(oc whoami -t) https://registry.mydomain.example.com


您应该得到提示Login Succeeded,然后:

docker build -t registry.mydomain.example.com/openshiftProject/my-image:1.0 .
docker push registry.mydomain.example.com/openshiftProject/my-image:1.0