1

我一直致力于在 Centos 8 机器上设置 docker notary。我遵循了公证项目的README.md,它告诉我通过将项目附带的测试证书移动到.notary我的主目录中的文件夹来使用它。我的希望是,当我的 docker 客户端为其设置并正确标记图像时,docker push 到我的私人 docker repo(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

4 回答 4

1

使用 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”结尾,如果您不覆盖内容信任服务器,则主机名将与注册表名称匹配。

于 2020-11-19T00:35:29.047 回答
0

我在使用 Azure 容器注册表时没有遇到任何问题。在 Jfrog 注册表上工作,我有同样的错误

您的工作帮助了我“ $ sudo cp fixtures/root-ca.crt /etc/pki/ca-trust/source/anchors/ $ update-ca-trust “如果有帮助,我可以发布我的步骤谢谢@RijoSimon

于 2020-05-29T01:25:11.000 回答
0

公证服务器:x509:证书对 127.0.0.1 有效,而不是 xx.xx.xx.xx(notaryIP)

此错误是因为与公证服务器一起交付的证书仅对公证服务器、公证服务器、本地主机有效。要使其适用于您的远程域,您必须获得适用于您的 ip/域的 CA。

于 2022-01-13T03:00:33.870 回答
-1

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

希望能帮助到你

于 2020-05-29T19:10:49.800 回答