本文档提供了相关说明,介绍了如何手动触发 Google Distributed Cloud (GDC) 气隙式设备 Web 端点的证书重新签发。
准备工作
在手动重新签发 Web 证书之前,您必须拥有必要的权限并准备好环境。
申请 IAM 角色
如需在命名空间中创建、更新和删除 PKI Web 证书,请与组织 IAM 管理员联系,请求 Web TLS Certificate Admin (web-tls-cert-admin) 角色。
请注意以下账号要求:
- 您的基础架构运维人员群组的成员必须在系统命名空间中重新签发 PKI 网络证书。
- 平台管理员群组的成员可以在他们管理的所有其他命名空间中重新签发 PKI Web 证书。
准备环境
如果您尚未下载并安装 gdcloud CLI,请执行此操作。
按照安装组件中的说明安装
kubectlCLI。生成 kubeconfig 文件,以配置
kubectl访问权限。
重新签发证书
您可以通过更新注解来手动重新签发证书。如果默认证书颁发机构发生更改,GDC 经过网闸隔离设备不会自动重新签发由之前的默认证书颁发机构签发的证书,除非该证书即将过期。
如需手动触发证书重新签发,请使用 kubectl CLI 执行以下步骤:
将目标
Certificate的manual-reissuance注解设置为requested。以下示例更新了istio-system命名空间中使用的当前默认证书颁发机构的default-wildcard-cert证书:kubectl annotate --overwrite certificate.pki.security.gdc.goog default-wildcard-cert -n istio-system pki.security.gdc.goog/manual-reissuance='requested'在重新签发证书期间,您可能会看到
in-progress注解值处于过渡状态。等待manual-reissuance注解值显示为finished:kubectl -n istio-system get certificate.pki.security.gdc.goog/default-wildcard-cert -ojson | jq -r ' .metadata.annotations."pki.security.gdc.goog/manual-reissuance"'输出类似于以下内容:
finished验证证书颁发机构;它必须与证书规范中提及的颁发机构一致,或者(如果未指定)颁发机构必须与当前默认颁发机构一致:
kubectl -n istio-system get certificate.pki.security.gdc.goog/default-wildcard-cert -ojson | jq -r ' .status.issuedBy'输出类似于以下内容:
{ "name": "byo-cert-issuer", "namespace": "pki-system" }
自带证书的手动轮替
当您触发并完成手动自带证书 (BYO cert) 轮换时,必须为之前签名的自带证书对新生成的证书签名请求 (CSR) 进行签名。如需了解详情,请参阅为自带证书签名。
在轮替期间,GDC 气隙设备会创建新的私钥和公钥对。这会导致之前上传的签名证书与新的 CSR 不兼容。如果证书规范自初次上传后未发生变化,则之前上传的证书会继续使用,直到过期。如果规范发生变化,则会发生以下事件之一:
- 经过网闸隔离的 GDC 设备使用现有的匹配证书。
- 备用证书授权机构 (CA) 颁发新证书。
自带证书手动轮换示例
在以下示例中,您会看到之前已签名的自带证书触发了手动轮换:
byoCertStatus显示证书type值为Ready,reason值是Issued,其lastTransitionTime值比之前的值更早:{ "byoCertStatus": { "csrStatus": { "conditions": [ { "lastTransitionTime": "2024-05-03T22:38:43Z", "message": "", "observedGeneration": 2, "reason": "WaitingForSigning", "status": "False", "type": "Ready" } ], "csr": "LS0tLS1CRUdJTiBDRVJ..." }, "signedCertStatus": { "conditions": [ { "lastTransitionTime": "2024-05-03T22:38:43Z", "message": "RawSubjectPublickKeyInfo does not match with the CSR", "observedGeneration": 2, "reason": "Rejected", "status": "False", "type": "Ready" } ] } }, ```
在以下示例中,您会看到之前已签名的自带证书触发手动轮换的输出:
- 在
signedCertStatus中,reason字段显示Rejected,因为之前签名的证书在轮替后不再与新的 CSR 匹配。 CSR
reason声明WaitingForSigning:"conditions": [ { "lastTransitionTime": "2024-05-03T08:42:10Z", "message": "Certificate is issued", "observedGeneration": 2, "reason": "Issued", "status": "True", "type": "Ready" } ], "errorStatus": { "errors": [ { "code": "PLATAUTH2002", "message": "Waiting for CSR signing" } ], "lastUpdateTime": "2024-05-03T22:38:43Z" }, "issuedBy": { "name": "byo-cert-issuer", "namespace": "pki-system" } }
管理证书签名提醒
对于初始颁发、轮替和失效的证书签名提醒,您的 IO 必须按照 PKI 运行手册中以下部分记录的问题排查步骤来解决:
对于子 CA 错误代码:
PLATAUTH2001,请参阅 PLATAUTH-R2001。对于自带证书错误代码:
PLATAUTH2002,请参阅 PLATAUTH-R2002。