本頁說明如何擷取已啟用非對稱金鑰版本的公開金鑰部分。
對於後量子電腦 (PQC) 演算法 (預先發布版),公開金鑰的格式應符合 NIST PQC 標準 FIPS-203、FIPS-204 和 FIPS-205 的規定。對於所有其他 (非 PQC) 演算法,公開金鑰採用隱私強化電子郵件 (PEM) 格式。詳情請參閱 RFC 7468 的「一般注意事項」和「主體公開金鑰資訊的文字編碼」章節。
必要的角色
如要取得擷取公開金鑰所需的權限,請要求管理員授予您金鑰或上層資源的 Cloud KMS CryptoKey 公開金鑰檢視者 (roles/cloudkms.publicKeyViewer
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色包含擷取公開金鑰所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
您必須具備下列權限,才能擷取公開金鑰:
-
cloudkms.cryptoKeyVersions.viewPublicKey
-
cloudkms.locations.get
-
cloudkms.locations.list
-
resourcemanager.projects.get
擷取公開金鑰
您可以指定要擷取公開金鑰的格式。如果指定格式,系統會以指定格式在回應的 public_key
欄位中傳回鍵。否則,系統會在回應的 pem
欄位中傳回該值。
如何下載已啟用非對稱金鑰版本的公開金鑰:
控制台
前往 Google Cloud 控制台的「Key Management」頁面。
按一下金鑰環名稱,該金鑰環包含您要擷取公開金鑰的非對稱金鑰。
按一下要擷取公開金鑰的金鑰名稱。
在對應於您要擷取公開金鑰的金鑰版本的資料列上,按一下「查看更多」
。按一下「取得公開金鑰」。
提示中會顯示公開金鑰。您可以將公開金鑰複製到剪貼簿。如要下載公開金鑰,請點選「下載」。
如果找不到「Get public key」(取得公開金鑰) 選項,請確認以下事項:
- 金鑰為非對稱式金鑰。
- 已啟用金鑰版本。
- 您具備
cloudkms.cryptoKeyVersions.viewPublicKey
權限。
從 Google Cloud 主控台下載的公開金鑰檔案名稱格式為:
KEY_RING-KEY_NAME-KEY_VERSION.pub
檔案名稱的每個部分都以連字號分隔,例如 ringname-keyname-version.pub
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI。
gcloud kms keys versions get-public-key KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --public-key-format PUBLIC_KEY_FORMAT \ --output-file OUTPUT_FILE_PATH
更改下列內容:
KEY_VERSION
:鍵版本號碼。KEY_NAME
:鍵的名稱。KEY_RING
:金鑰所屬金鑰環的名稱。LOCATION
:金鑰環的 Cloud KMS 位置。PUBLIC_KEY_FORMAT
:您要匯出公開金鑰的格式。如要使用 PQC 演算法 (預先發布版),請使用nist-pqc
。對於所有其他鍵,您可以使用pem
或省略這個參數。OUTPUT_FILE_PATH
:要儲存公開金鑰檔案的路徑,例如public-key.pub
。
如需所有旗標和可能值的相關資訊,請搭配 --help
旗標執行指令。
C#
如要執行這段程式碼,請先設定 C# 開發環境,然後安裝 Cloud KMS C# SDK。
Go
如要執行這段程式碼,請先設定 Go 開發環境,然後安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,然後安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,然後安裝 Cloud KMS Node.js SDK。
PHP
如要執行這段程式碼,請先瞭解如何在 Google Cloud上使用 PHP,並安裝 Cloud KMS PHP SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
Ruby
如要執行這段程式碼,請先設定 Ruby 開發環境,然後安裝 Cloud KMS Ruby SDK。
API
這些範例會使用 curl 做為 HTTP 用戶端,以示範如何使用 API。如要進一步瞭解存取控制,請參閱「存取 Cloud KMS API」。
請呼叫 CryptoKeyVersions.getPublicKey 方法來擷取公開金鑰。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION/publicKey?public_key_format=PUBLIC_KEY_FORMAT" \ --request "GET" \ --header "authorization: Bearer TOKEN"
更改下列內容:
PROJECT_ID
:包含金鑰環的專案 ID。LOCATION
:金鑰環的 Cloud KMS 位置。KEY_RING
:金鑰所屬金鑰環的名稱。KEY_NAME
:鍵的名稱。KEY_VERSION
:鍵版本號碼。PUBLIC_KEY_FORMAT
:您要匯出公開金鑰的格式。如要使用 PQC 演算法 (預先發布版),請使用NIST_PQC
。對於所有其他鍵,您可以使用PEM
或省略這個參數。
如果省略非 PQC 金鑰的公開金鑰格式,輸出內容會類似以下內容:
{ "pem": "-----BEGIN PUBLIC KEY-----\nQ29uZ3JhdHVsYXRpb25zLCB5b3UndmUgZGlzY292ZX JlZCB0aGF0IHRoaXMgaXNuJ3QgYWN0dWFsbHkgYSBwdWJsaWMga2V5ISBIYXZlIGEgbmlj ZSBkYXkgOik=\n-----END PUBLIC KEY-----\n", "algorithm": "ALGORITHM", "pemCrc32c": "2561089887", "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/ KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/ KEY_VERSION", "protectionLevel": "PROTECTION_LEVEL" }
如果演算法使用公開金鑰格式 NIST_PQC
,輸出內容會類似以下內容:
{ "publicKeyFormat": "NIST_PQC", "publicKey": { "crc32cChecksum": "1985843562", "data": "kdcOIrFCC5kN8S4i0+R+AoSc9gYIJ9jEQ6zG235ZmCQ=" } "algorithm": "ALGORITHM", "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/ KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/ KEY_VERSION", "protectionLevel": "PROTECTION_LEVEL" }