1.3. 在 Tekton Chains 中签名数据的 secret
集群管理员可以生成密钥对,并使用 Tekton 链来使用 Kubernetes secret 为工件签名。要使 Tekton 链正常工作,加密的密钥和密码必须存在,作为 openshift-pipelines
命名空间中的 signing-secrets
secret 的一部分。
目前,Tekton 链支持 x509
和 cosign
签名方案。
只使用一个受支持的签名方案。
要将 x509
签名方案与 Tekton Chains 搭配使用,请将 ed25519
或 ecdsa
类型的 x509.pem
私钥存储在 signing-secrets
Kubernetes secret 中。
1.3.1. 使用 cosign 进行签名 复制链接链接已复制到粘贴板!
您可以使用 cosign
工具使用带有 Tekton 链的 cosign
签名方案。
先决条件
- 已安装 Cosign 工具。有关安装 Cosign 工具的详情,请参考有关 Cosign 的 Sigstore 文档。
流程
运行以下命令,生成
cosign.key
和cosign.pub
密钥对:cosign generate-key-pair k8s://openshift-pipelines/signing-secrets
$ cosign generate-key-pair k8s://openshift-pipelines/signing-secrets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cosign 会提示您输入密码,然后创建一个 Kubernetes secret。
-
将加密的
cosign.key
私钥和cosign.password
解密密码存储在signing-secrets
Kubernetes secret 中。确保私钥存储为ENCRYPTED COSIGN PRIVATE KEY
类型的加密 PEM 文件。
1.3.2. 使用 skopeo 进行签名 复制链接链接已复制到粘贴板!
您可以使用 skopeo
工具生成密钥,并在带有 Tekton 链的 cosign
签名方案中使用它们。
先决条件
- 已安装 skopeo 工具。
流程
运行以下命令生成公钥/私钥对:
skopeo generate-sigstore-key --output-prefix <mykey>
$ skopeo generate-sigstore-key --output-prefix <mykey>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<mykey>
替换为您选择的密钥名称。
Skopeo 会提示您输入私钥的密码短语,然后创建名为
<mykey>.private
和<mykey>.pub
的密钥文件。运行以下命令,使用
base64
工具对<mykey>.pub
文件进行编码:base64 -w 0 <mykey>.pub > b64.pub
$ base64 -w 0 <mykey>.pub > b64.pub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
base64
工具对<mykey>.private
文件进行编码:base64 -w 0 <mykey>.private > b64.private
$ base64 -w 0 <mykey>.private > b64.private
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
base64
工具对 passhprase 进行编码:echo -n '<passphrase>' | base64 -w 0 > b64.passphrase
$ echo -n '<passphrase>' | base64 -w 0 > b64.passphrase
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<passphrase>
替换为用于密钥对的密码短语。
运行以下命令,在
openshift-pipelines
命名空间中创建signing-secrets
secret:oc create secret generic signing-secrets -n openshift-pipelines
$ oc create secret generic signing-secrets -n openshift-pipelines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来编辑
signing-secrets
secret:oc edit secret -n openshift-pipelines signing-secrets
$ oc edit secret -n openshift-pipelines signing-secrets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下方法在 secret 的数据中添加编码的密钥:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.3. 解决 "secret already exists" 错误 复制链接链接已复制到粘贴板!
如果 signing-secret
secret 已经填充,则创建此 secret 的命令可能会输出以下出错信息:
Error from server (AlreadyExists): secrets "signing-secrets" already exists
Error from server (AlreadyExists): secrets "signing-secrets" already exists
您可以通过删除 secret 来解决这个问题。
流程
运行以下命令来删除
signing-secret
secret:oc delete secret signing-secrets -n openshift-pipelines
$ oc delete secret signing-secrets -n openshift-pipelines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新创建密钥对,并使用您首选的签名方案将其存储在机密中。