4.3. 轮转 Fulcio 证书
您可以主动轮转 Fulcio 服务使用的证书。此流程指导您完成旧的 Fulcio 证书,并使用要使用的 Red Hat Trusted Artifact Signer (RHTAS)的新证书替换它。使旧的 Fulcio 证书过期仍允许您验证旧证书签名的工件。
先决条件
- 安装在 Red Hat OpenShift Container Platform 上运行的 RHTAS operator。
- 正在运行的 Securesign 实例。
-
安装了
oc
、openssl
和cosign
二进制文件的工作站。
流程
将
tuftool
二进制文件从 OpenShift 集群下载到您的工作站。重要tuftool
二进制文件仅适用于 Linux 操作系统。- 在主页中,单击 ? 图标,单击 Command line tools,转至 tuftool 下载部分,然后点击您的平台的链接。
在工作站上打开一个终端,解压缩二进制
.gz
文件,并设置 execute 位:Example
gunzip tuftool-amd64.gz chmod +x tuftool-amd64
$ gunzip tuftool-amd64.gz $ chmod +x tuftool-amd64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH
环境中的位置:Example
sudo mv tuftool-amd64 /usr/local/bin/tuftool
$ sudo mv tuftool-amd64 /usr/local/bin/tuftool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
从命令行登录到 OpenShift:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
$ oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台找到用于命令行的登录令牌和 URL。登录 OpenShift Web 控制台。单击您的用户名,然后单击 Copy login command。如果被要求,再次提供您的用户名和密码,然后单击 Display Token 以查看该命令。
切换到 RHTAS 项目:
Example
oc project trusted-artifact-signer
$ oc project trusted-artifact-signer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成新证书,以及新的公钥和私钥:
Example
openssl ecparam -genkey -name prime256v1 -noout -out new-fulcio.pem openssl ec -in new-fulcio.pem -pubout -out new-fulcio-public.pem openssl ec -in new-fulcio.pem -out new-fulcio.pass.pem -des3 -passout pass:"CHANGE_ME" openssl req -new -x509 -key new-fulcio.pass.pem -out new-fulcio.cert.pem
$ openssl ecparam -genkey -name prime256v1 -noout -out new-fulcio.pem $ openssl ec -in new-fulcio.pem -pubout -out new-fulcio-public.pem $ openssl ec -in new-fulcio.pem -out new-fulcio.pass.pem -des3 -passout pass:"CHANGE_ME" $ openssl req -new -x509 -key new-fulcio.pass.pem -out new-fulcio.cert.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 CHANGE_ME 替换为新密码。
重要证书和密钥必须具有唯一的文件名。
创建新 secret:
Example
oc create secret generic fulcio-config \ --from-file=private=new-fulcio.pass.pem \ --from-file=cert=new-fulcio.cert.pem \ --from-literal=password=CHANGE_ME
$ oc create secret generic fulcio-config \ --from-file=private=new-fulcio.pass.pem \ --from-file=cert=new-fulcio.cert.pem \ --from-literal=password=CHANGE_ME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 CHANGE_ME 替换为新密码。
注意此处的密码必须与用于生成新私钥和公钥的密码匹配。
配置更新框架(TUF)服务以使用新的 Fulcio 证书。
设置 shell 环境:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建临时 TUF 目录结构:
Example
mkdir -p "${WORK}/root/" "${KEYDIR}" "${INPUT}" "${TUF_REPO}"
$ mkdir -p "${WORK}/root/" "${KEYDIR}" "${INPUT}" "${TUF_REPO}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 TUF 内容下载到临时 TUF 目录结构中:
Example
oc extract --to "${KEYDIR}/" secret/tuf-root-keys oc cp "${TUF_SERVER_POD}:/var/www/html" "${TUF_REPO}" cp "${TUF_REPO}/root.json" "${ROOT}"
$ oc extract --to "${KEYDIR}/" secret/tuf-root-keys $ oc cp "${TUF_SERVER_POD}:/var/www/html" "${TUF_REPO}" $ cp "${TUF_REPO}/root.json" "${ROOT}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查找活跃的 Fulcio 证书文件名。在本地 TUF 存储库中打开最新的目标文件,例如
1.targets.json
。在这个文件中,您将找到活跃的 Fulcio 证书文件名,例如fulcio_v1.crt.pem
。使用这个活跃 Fulcio 证书文件名设置环境变量:Example
export ACTIVE_CERT_NAME=fulcio_v1.crt.pem
$ export ACTIVE_CERT_NAME=fulcio_v1.crt.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 OpenShift 中提取活跃的 Fulico 证书:
Example
oc get secret $(oc get fulcio securesign-sample -o jsonpath='{.status.certificate.caRef.name}') -o jsonpath='{.data.cert}' | base64 -d > $ACTIVE_CERT_NAME
$ oc get secret $(oc get fulcio securesign-sample -o jsonpath='{.status.certificate.caRef.name}') -o jsonpath='{.data.cert}' | base64 -d > $ACTIVE_CERT_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使旧证书过期:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加新的 Fulcio 证书:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将这些更改上传到 TUF 服务器:
Example
oc rsync "${TUF_REPO}/" "${TUF_SERVER_POD}:/var/www/html"
$ oc rsync "${TUF_REPO}/" "${TUF_SERVER_POD}:/var/www/html"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除工作目录:
Example
rm -r $WORK
$ rm -r $WORK
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
更新 Securesign Fulcio 配置:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对 Securesign 实例进行补丁:
Example
oc patch Securesign securesign-sample --type='json' -p="$SECURESIGN_PATCH"
$ oc patch Securesign securesign-sample --type='json' -p="$SECURESIGN_PATCH"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待 Fulcio 服务器重新部署:
Example
oc wait pod -l app.kubernetes.io/name=fulcio-server --for=condition=Ready oc wait pod -l app.kubernetes.io/name=ctlog --for=condition=Ready
$ oc wait pod -l app.kubernetes.io/name=fulcio-server --for=condition=Ready $ oc wait pod -l app.kubernetes.io/name=ctlog --for=condition=Ready
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用更新的 TUF 配置更新
cosign
配置:Example
cosign initialize --mirror=$TUF_URL --root=$TUF_URL/root.json
$ cosign initialize --mirror=$TUF_URL --root=$TUF_URL/root.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您已准备好使用新的 Fulcio 证书签名并验证您的工件。