最新:在TwitterMastodon

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 needed
KEY=https://cert-manager.k8s.ac.cn/public-keys/cert-manager-pubkey-2021-09-20.pem
cosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-acmesolver:$IMAGE_TAG
cosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-cainjector:$IMAGE_TAG
cosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-ctl:$IMAGE_TAG
cosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-startupapicheck:$IMAGE_TAG
cosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-controller:$IMAGE_TAG
cosign verify --signature-digest-algorithm sha512 --insecure-ignore-tlog --key $KEY quay.io/jetstack/cert-manager-webhook:$IMAGE_TAG

为了在 Kubernetes 中获得更完整的签名验证流程,请查看 connaisseur

为什么 --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.gpg
helm verify --keyring cert-manager-keyring-2021-09-20-1020CF3C033D4F35BAE1C19E1226061C665DF13E.gpg /path/to/cert-manager-vx.y.z.tgz

如果您知道自己在做什么,并且想要以易于导入 GPG 的格式获取签名密钥,则可以使用 ASCII 加密版本