本页面介绍如何检索已启用的非对称密钥版本的公钥部分。
公钥的格式取决于它是后量子计算 (PQC) 算法还是传统算法:
对于非 PQC 算法,公钥的默认格式是隐私权保密增强电子邮件 (PEM) 格式。您还可以检索区别编码规则 (DER) 格式的非 PQC 公钥。如需了解详情,请参阅 RFC 7468,尤其是“一般注意事项”和“正文公钥信息的文本编码”部分。
对于 NIST 标准化的 PQC 算法(预览版),您可以按照 NIST PCQ 标准中针对该 算法确定的格式检索 公钥。如需了解详情,请参阅 FIPS-203、FIPS-204 和 FIPS-205。 PEM 和 DER 格式仅适用于 ML-DSA 密钥。
对于 X-Wing,您可以按照 X-Wing 标准指定的原始字节格式检索公钥。这些密钥不支持 PEM 和 DER 格式。
所需角色
如需获得检索公钥所需的权限,请让您的管理员为您授予密钥或父级资源的 Cloud KMS CryptoKey Public Key Viewer (roles/cloudkms.publicKeyViewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含 检索公钥所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需检索公钥,您需要以下权限:
-
cloudkms.cryptoKeyVersions.viewPublicKey -
cloudkms.locations.get -
cloudkms.locations.list -
resourcemanager.projects.get
检索公钥
您可以指定要检索公钥的格式。
如果指定了格式,则密钥将以响应的 public_key 字段中指定的格式返回。否则,它将以响应的 pem 字段返回。
如需下载已启用的非对称密钥版本的公钥,请执行以下操作:
控制台
在 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 \
--public-key-format PUBLIC_KEY_FORMAT \
--output-file OUTPUT_FILE_PATH
替换以下内容:
KEY_VERSION:密钥版本号。KEY_NAME:密钥的名称。KEY_RING:包含密钥的密钥环的名称。LOCATION:密钥环的 Cloud KMS 位置。PUBLIC_KEY_FORMAT:您要导出公钥的格式。对于 NIST PQC 算法 (预览版),请使用nist-pqc,对于 X-Wing,请使用xwing-raw-bytes。对于所有其他密钥,您可以使用pem、der或省略此参数。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
如需运行此代码,请先了解如何在 上使用 PHP Google Cloud 并 安装 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 的 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" }