cert-manager 签名验证
为了帮助防止供应链攻击,一些 cert-manager 发布工件经过加密签名,因此您可以确定您即将安装的 cert-manager 版本实际上是由 cert-manager 维护者构建和提供的。
如果您出于任何原因需要使用 cert-manager 的镜像版本,则此签名至关重要;它可以让您确认镜像未篡改您即将安装的代码。
用于验证的签名密钥都可以在本网站上找到,但您需要的实际密钥可能取决于您将来尝试验证的工件。在撰写本文时,所有签名都使用相同的底层密钥完成。
容器镜像 / Cosign
对于所有从 v1.8.0
及更高版本的 cert-manager 版本,cert-manager 容器镜像都使用 cosign
进行签名和验证。
IMAGE_TAG=v1.16.1 # change as neededKEY=https://cert-manager.k8s.ac.cn/public-keys/cert-manager-pubkey-2021-09-20.pemcosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-acmesolver:$IMAGE_TAGcosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-cainjector:$IMAGE_TAGcosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-ctl:$IMAGE_TAGcosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-startupapicheck:$IMAGE_TAGcosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-controller:$IMAGE_TAGcosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-webhook:$IMAGE_TAG
为了在 Kubernetes 中获得更完整的签名验证流程,请查看 connaisseur
。
- PEM 编码的公钥:
cert-manager-pubkey-2021-09-20.pem
为什么 --insecure-ignore-tlog
?
我们希望验证命令中不出现 insecure
标志,并且我们打算在将来修复这个问题。目前,忽略透明度日志可以让验证工作正常进行。
请注意,cert-manager 密钥存储在 Google Cloud KMS 中,仅在签名 cert-manager 版本时,Google Cloud Build 才会使用它。
Helm 图表
Helm 需要使用 PGP 进行验证;密钥格式不同。
尝试在验证过程中使用“普通”PEM 编码的公钥将失败。
对于所有从 v1.6.0
及更高版本的 cert-manager 版本,Helm 图表都通过 Helm CLI 进行签名和验证。
最简单的验证方法是直接获取 GPG 密钥环,然后将其传递给 helm verify
,如下所示
curl -sSL https://cert-manager.k8s.ac.cn/public-keys/cert-manager-keyring-2021-09-20-1020CF3C033D4F35BAE1C19E1226061C665DF13E.gpg > cert-manager-keyring-2021-09-20-1020CF3C033D4F35BAE1C19E1226061C665DF13E.gpghelm verify --keyring cert-manager-keyring-2021-09-20-1020CF3C033D4F35BAE1C19E1226061C665DF13E.gpg /path/to/cert-manager-vx.y.z.tgz
如果您知道自己在做什么,并且想要以易于导入 GPG 的格式获取签名密钥,则可以使用 ASCII 加密版本