手動重新核發 PKI 網路憑證

本文說明如何手動觸發 Google Distributed Cloud (GDC) 實體隔離方案網路端點的憑證重新核發作業。

本文適用於平台管理員群組中,想要管理 PKI 網路憑證的使用者。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。

事前準備

手動重新核發網站憑證前,您必須具備必要權限並準備好環境。

要求 IAM 角色

如要在命名空間中建立、更新及刪除 PKI 網路憑證,請與 IAM 機構組織管理員聯絡,要求取得網路 TLS 憑證管理員 (web-tls-cert-admin) 角色。

請留意下列帳戶規定:

  • 基礎架構操作員群組成員必須在系統命名空間中重新核發 PKI 網路憑證。
  • 平台管理員群組的成員可以在其管理的所有其他命名空間中,重新核發 PKI 網路憑證。

準備環境

重新核發憑證

您可以更新註解,手動重新核發憑證。如果預設憑證核發機構變更,Distributed Cloud 不會自動重新核發由先前預設憑證核發機構簽署的憑證,除非憑證即將到期。

如要手動觸發憑證重新核發作業,請使用 kubectl CLI 執行下列步驟:

  1. 將目標 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'
    
  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 憑證) 輪替時,您必須為先前簽署的 BYO 憑證簽署新產生的憑證簽署要求 (CSR)。詳情請參閱「簽署 BYO 憑證」。

在輪替期間,Distributed Cloud 會建立新的私密和公開金鑰組。因此,先前上傳的已簽署憑證與新的 CSR 不相容。如果憑證規格自初次上傳後未曾變更,先前上傳的憑證會繼續使用,直到到期為止。如果規格變更,會發生下列其中一項事件:

  • Distributed Cloud 會使用現有的相符憑證。
  • 備用憑證授權單位 (CA) 核發新憑證。

手動輪替自備憑證範例

在以下範例中,您會看到先前簽署的 BYO 憑證觸發手動輪替:

  • 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"
           }
         ]
       }
     },
     ```
    

在以下範例中,您會看到先前簽署的 BYO 憑證輸出內容,該憑證已觸發手動輪替:

  • 在 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。

  • 如需 BYO 憑證錯誤代碼 PLATAUTH2002,請參閱 PLATAUTH-R2002。