手动重新签发 PKI Web 证书

本页面提供相关说明,介绍如何手动触发 Google Distributed Cloud (GDC) 隔离 Web 端点的证书重新签发。

准备工作

如需获得访问命名空间中证书所需的权限,请让您的组织 IAM 管理员向您授予 Web TLS 证书管理员 (web-tls-cert-admin) 角色。

在重新签发证书时,请考虑以下账号要求:

  • 使用基础设施运维人员 (IO) 账号访问系统命名空间中的证书。请让您的 IO 执行此任务。
  • 使用平台管理员账号访问其他命名空间中的证书。

重新签发证书

您可以通过更新注解来手动重新签发证书。如果默认证书签发方发生更改,除非证书即将过期,否则 Distributed Cloud 不会自动重新签发由之前的默认证书签发方签名的证书。

如需手动触发证书重新签发,请使用 kubectl CLI 执行以下步骤:

  1. 将目标 Certificatemanual-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'
    
  2. 在重新签发证书期间,您可能会看到 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
    
  3. 验证证书颁发者;它必须与证书规范中提及的颁发者一致,或者(如果未指定)颁发者必须与当前默认颁发者一致:

    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。