Ответ 1
Этот общий вопрос беспокоил меня на пару месяцев. Я впервые заметил это, пытаясь получить локальную виртуальную машину для извлечения пакетов Python, поэтому у меня уже было представление о том, что сертификаты будут проблемой. Я решил это для своих виртуальных машин, но до сегодняшнего дня не смог найти решение для Docker. Хитрость заключается в том, чтобы добавить сертификаты в хранилище сертификатов Docker и сохранить их. Это достигается с помощью скрипта bootlocal.sh
который выполняется каждый раз при запуске машины.
Я предполагаю, что если вы уже нашли ответы на Linux, вы уже знаете первые шаги. Я буду документировать их здесь ради того, чтобы быть основательным, потому что другие, возможно, не достигли этого. Начните с № 3 ниже, если вы уже сделали # 1 и # 2 с помощью предыдущих попыток.
-
Получите набор корпоративных корневых сертификатов, которые должны быть установлены в вашем браузере, настроенном корпорацией. В Chrome вы можете перейти в "Настройки", "Показать дополнительные настройки" и прокрутить страницу до HTTPS/SSL, где вы можете выбрать "Управление сертификатами". Моя организация разместила их в доверенных корневых центрах сертификации и назвала их после организации. Экспортируйте каждый (у меня два), по одному за раз. Вы можете выбрать формат DER и сделать шаг № 2 ниже, чтобы преобразовать в PEM, или вы можете выбрать Base-64, закодированный x.509 (.CER), и просто переименовать расширение в .pem и пропустить шаг # 2.
-
После того, как вы сохранили их в известном месте, вы захотите преобразовать их в формат PEM, если вы не сохраните их как duch. Самый простой способ, который я нашел для этого, - запустить команду openssl.exe [1] из терминала быстрого запуска Docker.
openssl x509 -inform der -in certificate.cer -out certificate.pem
-
После того, как у вас есть файлы.pem, вы захотите скопировать их в место, к которому имеет доступ ваш компьютер докеров. Как правило, для MS Windows у вас будет /c/Users хост-машины, автоматически устанавливаемой внутри вашей док-машины. Я создал каталог в каталоге c:\Users\my.username\certs и скопировал их там.
-
Этот шаг не может быть строго необходим, но это то, что я сделал, и он работает. Вы захотите скопировать эти сертификаты в свой раздел boot2docker, который является постоянным. Я подключаюсь к своей машине по умолчанию, что вам нужно сделать для шага 5.
MINGW64:$ docker-machine ssh default [email protected]:~$ sudo -s [email protected]:/home/docker# mkdir /var/lib/boot2docker/certs [email protected]:/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 /var/lib/boot2docker/certs/*.pem /etc/docker/certs.d
-
Перезагрузите компьютер либо с помощью команды перезагрузки из машины, либо с помощью команды 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