Docker на Mac за прокси-сервером, который меняет SSL-сертификат

Мой возможный обходной путь для решения проблемы, приведенной ниже, заключался в том, чтобы убедить наших ИТ-специалистов не быть посредником в реестре 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") 

(Действительно, когда я вхожу в гостевую беспроводную сеть - у которой нет навязчивого прокси-сервера - я могу пройти этот шаг. Однако мне нужно выяснить, как заставить эту работу работать через прокси-сервер, поскольку использование гостевой беспроводной сети несостоятельно как долгосрочное решение.)

Моя проблема, на первый взгляд, очень похожа на ту, на которую ответил этот вопрос. Однако принятый ответ на этот вопрос не работает для меня, так как обсуждаемый ими файл root_unix.go не вызывается на Mac. (Из просмотра можно предположить, что вместо этого будут задействованы root_cgo_darwin.go и / или root_darwin.go.)

Это на самом деле не говорит мне о том, как в оперативном плане мне нужно сделать эквивалентную работу по установке какого-либо доверенного сертификата. Мне удалось достать *.cer файл, который, как мне кажется, мне нужен, но я не знаю, что с ним делать.

Я надеюсь, что кто-то может указать мне правильное направление.

Изменить: Я подумал, что, возможно, мне нужно что-то похожее на то, что предлагает эта страница, чтобы добавить сертификат. Увы, моя попытка следовать этим инструкциям не удалась следующим образом:

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 ответа

Решение

В соответствии с README 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.

Источник 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.

Если вы используете докер-машину

отредактируйте $USER/.docker/machine/machines/default/config.json

"EngineOptions": {
    "InsecureRegistry": [
        "XXX.XXX.virtual"
    ],
}
Другие вопросы по тегам