docker push с локальным нотариальным сервером возвращает ошибку: x509: сертификат, подписанный неизвестным органом

Я работал над настройкой нотариуса-докера на машине Centos 8. Я следил за README.md для проекта нотариуса, в котором мне предлагается использовать сертификат тестирования, с которым поставляется проект, переместив его в.notaryпапка в моем домашнем каталоге. Я надеюсь, что когда мой докер-клиент настроен для него и когда я правильно помечу изображение, нажатие докера на мое частное репозиторий докеров (jFrog Artifactory) приведет к опубликованному изображению, подписанному нотариусом.

Мое частное репо работает на собственном компьютере, а не на компьютере, на котором работает нотариальный сервер.

Но каждый раз, когда я нажимаю на кнопку, я получаю эту ошибку:

Signing and pushing trust metadata
Error: error contacting notary server: x509: certificate signed by unknown authority

Один из способов исправить это - скопировать тестовые сертификаты из fixtures/root-ca.crt к /etc/pki/ca-trust/source/anchors/ после чего я побежал update-ca-trust.

$ sudo cp fixtures/root-ca.crt/etc/pki/ca-trust/source/anchors/
$ update-ca-trust

Но это тоже не помогло. Почему нотариус выдает эту ошибку? Мы будем очень благодарны за помощь в решении этой проблемы.

4 ответа

С помощью Docker Content Trust вы можете добавить CA в домашний каталог пользователя в подкаталоге в ~/.docker/tls:

mkdir -p ~/.docker/tls/${content_trust_hostname}
cp ca.pem ~/.docker/tls/${content_trust_hostname}/ca.crt
export DOCKER_CONTENT_TRUST=1
docker push ${content_trust_hostname}/${your_repo}:${tag}

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

У меня не было проблем с реестром контейнеров Azure. Работая с реестром Jfrog, у меня была такая же ошибка

Ваша работа помогла мне "$ sudo cp fixtures/root-ca.crt /etc/pki/ca-trust/source/anchors/ $ update-ca-trust" Если это поможет, я могу опубликовать свои шаги Спасибо @RijoSimon

нотариальный сервер: x509: сертификат действителен для 127.0.0.1, а не для xx.xx.xx.xx(notaryIP)

Эта ошибка связана с тем, что сертификат, поставляемый с нотариальным сервером, действителен только для нотариального сервера, нотариального сервера, локального хоста. Чтобы заставить его работать с вашим удаленным доменом, вы должны получить ЦС, который работает для вашего IP-адреса/домена.

Rijo, мое решение не завершено, потому что оно не работает на удаленном сервере, возникает ошибка

Error: error contacting notary server: x509: certificate is valid for 127.0.0.1, not xx.xx.xx.xx(notaryIP)

Вот мое решение, в котором можно было подписать изображение локально на нотариальном сервере и отправить его

Docker login artifactoryurl 
username:
password: 
Login successful 
docker trust key generate keyname 
export DOCKER_CONTENT_TRUST=0
docker build -f Dockerfile -t artrifactoryurl/reponame:tag .           
export DOCKER_CONTENT_TRUST_SERVER=http://127.0.0.1:4443   
export DOCKER_CONTENT_TRUST=1  
docker trust signer add —key keyname.pub name artifactoryurl/repo
docker trust sign artifactoryurl/reponame:tag
docker inspect artifactoryurl/reponame:tag

Надеюсь, это поможет

Другие вопросы по тегам