Docker в Windows (Boot2Docker) - сертификат, подписанный неизвестным органом ошибка
Я запускаю Docker в Windows (виртуальное окно boot2docker + Oracle). В моей корпоративной среде они изменяют сертификаты так, чтобы ЦС были самоподписанными ЦС компании. Таким образом, цепочка заканчивается так:
Company's CA
|__
Company's Intermediate CA
|__
Docker Certificate
когда я пытаюсь запустить любую команду, например:
docker run hello-world
Я получаю эту ошибку:
Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificate signed by unknown authority
Я нашел несколько ответов на эту проблему, но всегда для сред Linux. Как я могу обойти эту проблему в Windows?
3 ответов
этот общий вопрос мучил меня в течение нескольких месяцев. Я впервые заметил это при попытке получить локальную виртуальную машину для получения пакетов Python, поэтому у меня уже была идея, что сертификаты будут проблемой. Я решил это для своих VMs, но до сегодняшнего дня не мог разработать решение для Docker. Фокус в том, чтобы добавить сертификаты в хранилище сертификатов Docker и сохранить их. Это достигается с помощью bootlocal.sh сценарий, который выполняется при каждом запуске машины.
Я предполагаю, что если вы уже нашли ответы для Linux, вы уже знаете, первые шаги. Я задокументирую их здесь, чтобы быть тщательным, потому что другие, возможно, не зашли так далеко. Начните с #3 ниже, если вы уже сделали #1 и #2 с помощью предыдущих попыток.
получите набор корпоративных корневых сертификатов, которые должны быть установлены в вашем корпоративном браузере. В Chrome вы можете перейти в Настройки, нажмите " Показать дополнительно параметры и прокрутите вниз до HTTPS / SSL, где вы можете выбрать управление сертификатами. Моя организация поместила их в Доверенные корневые органы сертификации и назвала их в честь организации. Экспортируйте каждый (у меня есть два), по одному, не забывая выбирать формат DER.
-
как только вы сохраните их в известном месте, вы захотите преобразовать их в формат PEM. Самый простой способ сделать это-запустить openssl.exe [1] команда из Докера Терминал Быстрого Запуска.
openssl x509 -inform der -in certificate.cer -out certificate.pem
как только у вас есть .файлы pem, вы хотите скопировать их в место, к которому имеет доступ ваша машина Docker. Я сделал каталог в c:\Users\my - ... username\certs и скопировал их там.
-
этот шаг не является абсолютно необходимым, но это то, что я сделал, и это работает. Вы захотите скопировать эти сертификаты в раздел boot2docker, который является постоянным. Я подключаюсь к машине по умолчанию, это то, что вам нужно будет сделать для шага 5.
MINGW64:$ docker-machine ssh default docker@default:~$ sudo -s root@default:/home/docker# mkdir /var/lib/boot2docker/certs root@default:/home/docker# cp /c/Users/my.username/certs/*.pem /var/lib/boot2docker/certs/
-
теперь пришло время написать bootlocal.sh скрипт, который будет копировать сертификаты в нужное место при каждом запуске системы.[2] Если вы еще этого не сделали, откройте SSH-соединение с машиной на шаге 4.
touch /var/lib/boot2docker/bootlocal.sh && chmod +x /var/lib/boot2docker/bootlocal.sh vi /var/lib/boot2docker/bootlocal.sh
вставьте следующее И сохраните файл:
#!/bin/sh mkdir -p /etc/docker/certs.d && cp certs/certificate.pem /etc/docker/certs.d
-
перезагрузите компьютер, либо с помощью команды reboot из машина или с помощью команды docker-machine из терминала Docker:
docker-machine restart default
теперь вы должны иметь возможность запускать "hello-world" и другие. Надеюсь, это поможет.
источник
[1] https://serverfault.com/questions/254627/how-to-convert-a-cer-file-in-pem
[2] https://github.com/boot2docker/boot2docker/issues/347#issuecomment-189112043
способ сделать это В Firefox перейдите по url: https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io, Нажмите кнопку просмотреть сведения о сертификате и извлеките его как crt.
скопируйте файл в виртуальную машину, где ОС хранит crt:
CentOS
etc/pki/ca-trust/source/anchors/
# Then run
update-ca-trust force-enable
update-ca-trust extract
Ubuntu
/usr/share/ca-certificates
#Then run
sudo dpkg-reconfigure ca-certificates
перезагрузка докер, и он должен работать
для экспорта сертификата вы можете выбрать формат файла как"база-64 в кодировке x.509(.CER) " и, наконец, переименуйте расширение сертификата как .Пем!--2-->.