設定 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_PSS 和 RSA_SIGN_PKCS1 變體。詳情請參閱 RFC 8017。
RSA-PSS 是較新的簽章機制,安全性更高,建議用於大多數的新導入項目。RSA_SIGN_PKCS1 可與尚不支援 PSS 的舊版系統相容。
ECDSA
橢圓曲線金鑰提供的安全性與 RSA 類似,但金鑰大小較小。Cloud KMS 支援 EC_SIGN_P256 和 EC_SIGN_P384。在現代系統中,ECDSA 通常是效能和效率方面的首選。
混合鏈結
在同一條憑證鏈中使用不同的演算法系列,可能會導致某些系統發生問題。為避免潛在問題,建議您為 RSA 和 ECDSA 分別建立鏈結。
查看支援的金鑰大小
雖然同一系列中較大的金鑰大小可提供更強大的安全性,但這些金鑰也會導致更多資料透過網路儲存及傳輸。此外,如果金鑰大小較大,加密和簽署作業有時會需要較長時間,但差異可能不明顯。
如要使用效期較長的金鑰 (例如與根 CA 或長期從屬 CA 相關聯的金鑰),可以使用安全性強度比其他金鑰更高的金鑰大小。舉例來說,您可以為根 CA 使用 4096 位元的 RSA 金鑰,並為生命週期較短的下層 CA 使用 2048 位元的 RSA 金鑰。
為 CA 金鑰選擇簽署演算法
為 CA 金鑰選擇簽署演算法時,請考慮下列步驟:
選擇演算法系列。
如要建立從現有根 CA 鏈結的下層 CA,請使用與根 CA 相同的系列。
如要建立新的根憑證授權單位,但需要使用不支援 ECDSA 的舊版系統,請使用其中一種 RSA 簽署演算法。
否則,如果上述條件都不適用,建議您使用其中一種橢圓曲線簽章演算法。
僅限 RSA:選擇簽章演算法。
如果您預計要使用不支援 PSS 的舊版程式庫或架構,請使用
RSA_SIGN_PKCS1演算法。否則,請使用其中一種
RSA_SIGN_PSS演算法。選擇金鑰大小。
如果是預期生命週期以年為單位的根 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。這些金鑰會執行數位簽章作業,以核發憑證。 - 靜態資料加密金鑰:需要具有
CryptoKeyPurpose的ENCRYPT_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。
後續步驟
- 瞭解如何建立根 CA。
- 瞭解如何建立下層 CA。
- 瞭解 Cloud KMS:金鑰用途和演算法。
- 瞭解 Cloud KMS:數位簽章。
- 瞭解如何設定儲存空間 bucket。