Сертификат Docker Pull, подписанный неизвестным органом - PullRequest
0 голосов
/ 08 июня 2018

Я пытался извлечь образ докера из реестра докеров, но столкнулся со следующей проблемой:

$ docker pull <docker registry>/<image name>/<tag> 
Error response from daemon: Get <docker registry>/v1/_ping: x509: certificate signed by unknown authority

Я попытался с помощью "curl" и получить похожее сообщение об ошибке:

 curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.

Поэтому я скачал сертификат CA и импортировал на сервер (RedHat Linux 7) с помощью следующих команд:

cp root_cert.cer /etc/pki/ca-trust/source/anchors/
update-ca-trust

После импорта корневого сертификата я вижу, что curl работает нормально, так какЯ не буду жаловаться на ошибку сертификата, однако, если я использую docker pull, у меня все еще будет та же проблема.docker использует другое местоположение ка-сертификата, чем curl?Как мне исправить проблему с docker pull в этой ситуации?

Ответы [ 2 ]

0 голосов
/ 20 марта 2019
  • сначала создайте файл - /etc/docker/daemon.json
  • , затем выполните следующее для добавления сертификатов

    openssl s_client -showcerts -connect <registry_address>:<registry_port> < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/<registry_address>/ca.crt
    

работает без перезапуска

ИЛИ

импортируйте сертификат в систему, как

  • , сохраните сертификат в файл, как команда выше (портважно, протокол не нужен)

    openssl s_client -showcerts -connect <registry_address>:<registry_port> < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ca.crt
    
  • скопируйте его в / usr / local / share / ca-сертификаты /

    cp ca.crt /usr/local/share/ca-certificates/
    
  • запустить update-ca-сертификаты

    sudo update-ca-certificates
    
  • перезапустить докер!
0 голосов
/ 09 июня 2018

Вам может потребоваться перезапустить службу докера, чтобы она обнаружила изменение в сертификатах ОС.

У Docker есть дополнительное расположение, которое вы можете использовать для доверия отдельному ЦС сервера реестра.Вы можете разместить сертификат CA внутри /etc/docker/certs.d/<docker registry>/ca.crt.Включите номер порта, если вы укажете его в теге изображения, например,

/etc/docker/certs.d/my-registry.example.com:5000/ca.crt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...