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 с помощью предыдущих попыток.

  1. получите набор корпоративных корневых сертификатов, которые должны быть установлены в вашем корпоративном браузере. В Chrome вы можете перейти в Настройки, нажмите " Показать дополнительно параметры и прокрутите вниз до HTTPS / SSL, где вы можете выбрать управление сертификатами. Моя организация поместила их в Доверенные корневые органы сертификации и назвала их в честь организации. Экспортируйте каждый (у меня есть два), по одному, не забывая выбирать формат DER.

  2. как только вы сохраните их в известном месте, вы захотите преобразовать их в формат PEM. Самый простой способ сделать это-запустить openssl.exe [1] команда из Докера Терминал Быстрого Запуска.

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
  3. как только у вас есть .файлы pem, вы хотите скопировать их в место, к которому имеет доступ ваша машина Docker. Я сделал каталог в c:\Users\my - ... username\certs и скопировал их там.

  4. этот шаг не является абсолютно необходимым, но это то, что я сделал, и это работает. Вы захотите скопировать эти сертификаты в раздел 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/
    
  5. теперь пришло время написать 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
    
  6. перезагрузите компьютер, либо с помощью команды 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-->.