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
Надеюсь, это поможет