6.6. 配置客户端以验证签名


为确保从远程 registry 拉取的容器镜像被正确签名,您必须首先在策略文件中使用正确的公钥配置镜像。

先决条件

  • 客户端必须配置 sudo 权限才能验证签名。

流程

  1. 打开终端并使用以下命令:

    >  sudo <name of editor> /etc/containers/policy.json
    Copy to Clipboard Toggle word wrap

    显示的文件类似如下:

    {
      "default": [{"type": "reject"}],
      "transports": {
      	"docker": {
        	"quay.io": [{"type": "insecureAcceptAnything"}],
        	"docker.io": [{"type": "insecureAcceptAnything"}],
        	"<server-address>": [
          	{
              	    "type": "signedBy",
              	    "keyType": "GPGKeys",
              	    "keyPath": "/tmp/containersig.txt"
          	}]
      	}
      }
    }
    Copy to Clipboard Toggle word wrap

    此文件显示 quay.iodocker.io 都不执行验证,因为类型是 insecureAcceptAnything,它会覆盖默认的 reject 类型。但是 <server-address> 将执行验证,因为参数 type 被设置为 "signedBy"

    注意

    目前唯一支持的 keyType 是 GPG 密钥。

  2. <server-address> 条目下,修改 keyPath <1> 使其包含您的密钥文件的名称。

    {
        	"default": [{"type": "reject"}],
        	"transports": {
            	"docker": {
              	  "quay.io": [{"type": "insecureAcceptAnything"}],
              	  "docker.io": [{"type": "insecureAcceptAnything"}],
              	  "<server-address>": [{
                    	"type": "signedBy",
                    	"keyType": "GPGKeys",
                    	"keyPath": "/tmp/<key file name>",
                    	"signedIdentity": {
                      	  "type": "matchExact"
                        }
                	  }]
                }
        	}
    }
    Copy to Clipboard Toggle word wrap
  3. 保存并关闭该文件。
  4. 使用 podman 或您选择的客户端拉取文件:
> podman pull <server-address>/<container-name>:<tag name> --tls-verify=false
Copy to Clipboard Toggle word wrap

此响应验证镜像是否已签名,且无错误。如果镜像没有签名,命令会失败。

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat