設定 CA 簽署金鑰

憑證授權單位服務 (CA 服務) 中的憑證授權單位 (CA) 需要加密編譯金鑰,才能簽署核發的憑證。這個簽署金鑰會為您的公用金鑰基礎架構 (PKI) 建立信任關係。

本文說明可為 CA 簽署金鑰選擇的金鑰管理策略,以及如何設定。您可以選擇 Google-owned and managed key ,簡化管理作業並減少設定,也可以選擇客戶管理的金鑰,直接控管金鑰的生命週期和屬性。

使用 Google-owned and managed key

使用 Google-owned and managed key時,您可以選擇加密編譯演算法和金鑰大小。CA 服務會在 Google 管理的專案中,建立及管理專屬 Cloud Key Management Service 金鑰的生命週期。

查看支援的簽署金鑰演算法

Cloud KMS 支援兩大類非對稱式簽署作業演算法,適用於 CA:RSA 和 ECDSA。

RSA

以 RSA 為基礎的簽章機制具有廣泛的相容性。如需支援舊版系統,請使用 RSA。Cloud KMS 提供 RSA_SIGN_PSSRSA_SIGN_PKCS1 變體。詳情請參閱 RFC 8017

RSA-PSS 是較新的簽章機制,安全性更高,建議用於大多數的新導入項目。RSA_SIGN_PKCS1 可與尚不支援 PSS 的舊版系統相容。

ECDSA

橢圓曲線金鑰提供的安全性與 RSA 類似,但金鑰大小較小。Cloud KMS 支援 EC_SIGN_P256EC_SIGN_P384。在現代系統中,ECDSA 通常是效能和效率方面的首選。

混合鏈結

在同一條憑證鏈中使用不同的演算法系列,可能會導致某些系統發生問題。為避免潛在問題,建議您為 RSA 和 ECDSA 分別建立鏈結。

查看支援的金鑰大小

雖然同一系列中較大的金鑰大小可提供更強大的安全性,但這些金鑰也會導致更多資料透過網路儲存及傳輸。此外,如果金鑰大小較大,加密和簽署作業有時會需要較長時間,但差異可能不明顯。

如要使用效期較長的金鑰 (例如與根 CA 或長期從屬 CA 相關聯的金鑰),可以使用安全性強度比其他金鑰更高的金鑰大小。舉例來說,您可以為根 CA 使用 4096 位元的 RSA 金鑰,並為生命週期較短的下層 CA 使用 2048 位元的 RSA 金鑰。

為 CA 金鑰選擇簽署演算法

為 CA 金鑰選擇簽署演算法時,請考慮下列步驟:

  1. 選擇演算法系列。

    如要建立從現有根 CA 鏈結的下層 CA,請使用與根 CA 相同的系列。

    如要建立新的根憑證授權單位,但需要使用不支援 ECDSA 的舊版系統,請使用其中一種 RSA 簽署演算法

    否則,如果上述條件都不適用,建議您使用其中一種橢圓曲線簽章演算法

  2. 僅限 RSA:選擇簽章演算法。

    如果您預計要使用不支援 PSS 的舊版程式庫或架構,請使用 RSA_SIGN_PKCS1 演算法。

    否則,請使用其中一種 RSA_SIGN_PSS 演算法。

  3. 選擇金鑰大小。

    如果是預期生命週期以年為單位的根 CA 或從屬 CA,建議您使用該演算法系列可用的最大金鑰大小。

    • RSA 支援的最大金鑰大小為 4096 位元。
    • 如果是 ECDSA,支援的最大金鑰大小為 384 位元。

    如果從屬 CA 的生命週期較短,可以使用較小的金鑰大小,例如 RSA 的 2048 位元或 ECDSA 的 256 位元。

使用客戶自行管理的金鑰

您可以將 CA 設定為使用新的或現有的非對稱簽署金鑰,並在自己的 Cloud KMS 專案中管理。這個選項可直接控管金鑰的生命週期、權限和屬性。Cloud KMS 會定義金鑰的演算法和大小。設定及建立 CA 時,您會選取現有的金鑰版本,而不是演算法參數。

區分簽署金鑰和加密金鑰

使用 Cloud Key Management Service 金鑰做為 CA 簽署金鑰,與使用一或多個 Cloud KMS 金鑰加密靜態資料不同。這兩種金鑰類型的主要差異在於 Cloud KMS 中設定的 CryptoKeyPurpose

  • CA 簽署金鑰:需要具有 CryptoKeyPurpose 的金鑰 ASYMMETRIC_SIGN。這些金鑰會執行數位簽章作業,以核發憑證。
  • 靜態資料加密金鑰:需要具有 CryptoKeyPurposeENCRYPT_DECRYPT 金鑰。這些金鑰可用於加密及解密資料。靜態資料加密金鑰也稱為客戶管理的加密金鑰 (CMEK)。

無法使用單一 Cloud KMS 金鑰進行簽署和靜態資料加密。這些用途互斥,您可以在建立金鑰時設定用途。

CA 服務也支援 CA 集區等資源的待用資料加密,您可以使用具有 ENCRYPT_DECRYPT 用途的金鑰,另外設定這項功能。詳情請參閱「建立 CA 集區」。

事前準備

請確認符合下列規定:

  • 金鑰必須位於 Cloud KMS 專案中。請參閱「建立金鑰」。
  • 金鑰用途必須是 ASYMMETRIC_SIGN

  • 金鑰的演算法必須是支援的非對稱簽署演算法

  • 金鑰必須與 CA 集區位於相同位置。舉例來說,如果 CA 集區位於 us-central1,Cloud KMS 金鑰也必須位於 us-central1。如要瞭解 Cloud KMS 位置,請參閱 Cloud KMS 位置

  • 您打算使用的金鑰版本必須已啟用。

必要的角色

為確保服務帳戶具備使用客戶管理金鑰進行簽署作業的必要權限,請管理員在 Cloud Key Management Service 金鑰上,將 Cloud Key Management Service CryptoKey Signer/Verifier (roles/cloudkms.signerVerifier) IAM 角色授予服務帳戶。

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

管理員或許也能透過自訂角色或其他預先定義的角色,授予服務帳戶必要權限。

取得金鑰版本資源 ID

建立 CA 時,您必須提供特定 Cloud KMS CryptoKeyVersion 的完整資源 ID。複製這個字串,以便在建立 CA 的過程中使用。

資源 ID 必須採用下列格式:

projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KMS_KEY/cryptoKeyVersions/VERSION

更改下列內容:

  • KMS_PROJECT_ID:包含 KMS 金鑰的專案 ID。
  • LOCATION:KMS 金鑰的位置,這必須與 CA 集區位於相同位置。
  • KEY_RING:KMS 金鑰環的名稱。
  • KMS_KEY:KMS 金鑰名稱。
  • VERSION:KMS 金鑰版本。

詳情請參閱「取得 Cloud KMS 資源 ID」。建立憑證授權時,請使用這個 ID。

後續步驟