Mac上的Docker代理更改了ssl证书

时间:2014-12-17 22:39:59

标签: macos ssl go docker boot2docker

我对下面这个问题的最终解决方法是说服我们的IT人员不要使用dockerhub注册表。我无法得到任何其他工作,唉。

我遇到了一个问题,我最初尝试让Docker在我的Mac上运行,运行10.8.5。看来我公司的证书重写代理似乎妨碍了获取图像:

orflongpmacx8:docker pohl_longsine$ docker run hello-world
Unable to find image 'hello-world:latest' locally
Pulling repository hello-world
FATA[0001] Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "bcauth") 

(事实上,当我登录到无线客户端 - 没有这个有用的代理时 - 我可以通过这一步。但是,我需要弄清楚如何通过代理使这项工作,因为使用来宾无线是作为长期解决方案无法维持。)

从表面上看,我的问题似乎与this question中回答的问题非常相似。但是,该问题中接受的答案对我不起作用,因为他们讨论的root_unix.go文件不会在Mac上调用。 (通过浏览,我猜测会涉及root_cgo_darwin.go和/或root_darwin.go。)

这并没有真正告诉我,在操作上,我需要做同样的安装某种可信证书的工作。我设法抓住了*.cer文件,我相信这是我需要的文件,但是我不知道该如何处理它。

我希望有人能指出我正确的方向。

编辑:我认为可能需要使用类似于this page suggests的内容来添加证书。唉,我按照以下方式尝试遵循这些指示失败了:

orflongpmacx8:docker pohl_longsine$ sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "~/Desktop/Certs/redacted.cer" 
Password:
***Error reading file ~/Desktop/Certs/redacted.cer***
Error reading file ~/Desktop/Certs/redacted.cer

编辑2:我可能更接近解决这个问题。我应该更清楚地知道在引号内使用波浪号的路径。如果我使用绝对路径,我可以成功运行上面的命令来添加证书。

唉,这并没有缓解最终的症状:

FATA[0001] Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "bcauth") 

3 个答案:

答案 0 :(得分:7)

根据boot2docker自述文件

Insecure Registry

As of Docker version 1.3.1, if your registry doesn't support HTTPS, you must add it as an insecure registry.

$ boot2docker init
$ boot2docker up
$ boot2docker ssh
$ echo 'EXTRA_ARGS="--insecure-registry <YOUR INSECURE HOST>"' | sudo tee -a /var/lib/boot2docker/profile
$ sudo /etc/init.d/docker restart
then you should be able to do a docker push/pull.

答案 1 :(得分:4)

http://golang.org/src/crypto/x509/root_darwin.go的来源显示命令:

cmd := exec.Command("/usr/bin/security", "find-certificate", "-a", "-p", "/System/Library/Keychains/SystemRootCertificates.keychain")

用于查找证书。

尝试将.cer文件添加到OSX证书密钥链中。

答案 2 :(得分:0)

如果您使用docker-machine

编辑$ USER / .docker / machine / machines / default / config.json

"EngineOptions": {
    "InsecureRegistry": [
        "XXX.XXX.virtual"
    ],
}