本文档介绍了如何手动触发 Google Distributed Cloud (GDC) 气隙 Web 端点的证书重新签发。
本文档适用于平台管理员群组中想要管理 PKI 网络证书的读者。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众群体。
准备工作
在手动重新签发 Web 证书之前,您必须拥有必要的权限并准备好环境。
申请 IAM 角色
如需在命名空间中创建、更新和删除 PKI Web 证书,请与组织 IAM 管理员联系,请求授予 Web TLS Certificate Admin (web-tls-cert-admin) 角色。
请注意以下账号要求:
- 您的基础架构运维人员群组的成员必须在系统命名空间中重新签发 PKI 网络证书。
- 平台管理员群组的成员可以在他们管理的所有其他命名空间中重新签发 PKI Web 证书。
准备环境
如果您尚未下载并安装 gdcloud CLI,请执行此操作。
生成 kubeconfig 文件以配置
kubectl访问权限。
重新签发证书
您可以通过更新注解来手动重新签发证书。如果默认证书签发方发生更改,除非证书即将过期,否则 Distributed Cloud 不会自动重新签发由之前的默认证书签发方签名的证书。
如需手动触发证书重新签发,请使用 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) 进行签名。如需了解详情,请参阅为自带证书签名。
在轮替期间,Distributed Cloud 会创建新的私钥和公钥对。这会导致之前上传的签名证书与新的 CSR 不兼容。如果证书规范自初次上传后未发生变化,则之前上传的证书会继续使用,直到过期为止。如果规范发生变化,则会发生以下事件之一:
- Distributed Cloud 使用现有的匹配证书。
- 回退证书授权机构 (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。