本页介绍了如何检索已启用的非对称密钥版本的公钥部分。
公钥采用隐私权保密增强电子邮件 (PEM) 格式。如需了解详情,请参阅 RFC 7468 部分中的一般注意事项和正文公钥信息的文本编码。
所需的角色
如需获得检索公钥所需的权限,请让您的管理员为您授予对密钥或父级资源的 Cloud KMS CryptoKey Public Key Viewer (roles/cloudkms.publicKeyViewer
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含检索公钥所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
检索公钥需要以下权限:
-
cloudkms.cryptoKeyVersions.viewPublicKey
-
cloudkms.locations.get
-
cloudkms.locations.list
-
resourcemanager.projects.get
检索公钥
如需下载已启用的非对称密钥版本的公钥,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往密钥管理页面。
点击包含您要检索公钥的非对称密钥的密钥环的名称。
点击要检索公钥的密钥的名称。
在与要检索公钥的密钥版本对应的行中,点击查看更多
。点击获取公钥。
公钥显示在提示中。您可以将公钥复制到剪贴板。要下载公钥,请点击下载。
如果您没有看到获取公钥选项,请验证以下各项:
- 该密钥是非对称密钥。
- 密钥版本已启用。
- 您拥有
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 \ --output-file OUTPUT_FILE_PATH
替换以下内容:
KEY_VERSION
:密钥版本号。KEY_NAME
:密钥的名称。KEY_RING
:包含密钥的密钥环的名称。LOCATION
:密钥环的 Cloud KMS 位置。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" \ --request "GET" \ --header "authorization: Bearer TOKEN"
替换以下内容:
PROJECT_ID
:包含密钥环的项目的 ID。LOCATION
:密钥环的 Cloud KMS 位置。KEY_RING
:包含密钥的密钥环的名称。KEY_NAME
:密钥的名称。KEY_VERSION
:密钥版本号。
输出应类似如下所示:
{ "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" }