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

先决条件

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

流程

  1. 在终端类型中:

    > sudo <name of editor> __/etc/containers/policy.json__

该文件可能类似如下:

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

这不会显示 quay.iodocker.io 的验证,因为类型是 insecureAcceptAnything,它会覆盖拒绝的默认类型。但是,可以从 <server-address> 验证,因为参数 type 已设置为 "signedBy"`

注意

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

  1. <server-address> 条目下,修改 keyPath <1> 以反映您的密钥文件的名称。

        {
            "default": [{"type": "reject"}],
            "transports": {
                "docker": {
                  "quay.io": [{"type": "insecureAcceptAnything}],
                  "docker.io": [{"type": "insecureAcceptAnything}],
                  "_<server-address>_1": [
                    {
                        "type": "signedBy",
                        "keyType": "GPGKeys",
                        "keyPath": "/tmp/<key file name", 1
                        "signedIdentity": {
                          "type": "remapIdentity",
                          "prefix": "_<server-address>_",
                          "signedPrefix": "0.0.0.0:8002"
        }
  2. 保存并关闭该文件。
  3. 使用 podman 或您选择的客户端拉取文件:
> podman pull _<server-address>_/<container-name>:<tag name>
--tls-verify=false

这会在没有错误的情况下验证签名。