本页面介绍如何创建非对称密钥。您可以使用非对称密钥进行加密或用于签名。
您还可以创建对称加密密钥、Cloud HSM 密钥或 Cloud External Key Manager 密钥。
概览
创建密钥时,您将其添加到给定 Google Cloud 位置中的密钥环。您可以创建新的密钥环,也可以使用现有的密钥环。在本主题中,您将创建一个新的密钥环,并向其添加新密钥。
创建密钥环
请按照以下步骤为新密钥创建密钥环。如果希望改用现有密钥环,则可以创建密钥。
控制台
转到 Google Cloud 控制台中的密钥管理页面。
点击创建密钥环。
在密钥环名称字段中,输入所需的密钥环名称。
在密钥环位置下拉列表中,选择一个位置,例如
"us-east1"
。点击创建。
gcloud CLI
如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI。
gcloud kms keyrings create key-ring \ --location location
将 key-ring 替换为密钥环的名称。将 location 替换为密钥环及其密钥的 Cloud KMS 位置。
如需了解所有标志和可能值,请使用 --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。
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location-id/keyRings?key_ring_id=key-ring-id" \ --request "POST" \ --header "authorization: Bearer token"
如需了解详情,请参阅 KeyRing.create
API 文档。
创建非对称解密密钥
按照以下步骤在指定的密钥环和位置创建非对称解密密钥。这些示例使用 software
保护级别和 rsa-decrypt-oaep-2048-sha256
首次创建密钥时,密钥初始版本的状态为待生成。当状态变为已启用时,您便可以使用该密钥。如需详细了解密钥版本状态,请参阅密钥状态。
控制台
转到 Google Cloud 控制台中的密钥管理页面。
点击您要为其创建密钥的密钥环的名称。
点击创建密钥。
在您要创建哪种类型的密钥?中,选择生成的密钥。
在密钥名称字段中,输入密钥的名称。
点击保护级别下拉列表,然后选择软件。
点击用途下拉列表,然后选择非对称解密。
点击算法下拉列表,然后选择 2048 位 RSA - OAEP 填充 - SHA256 Digest。您可以在将来的密钥版本上更改此值。
点击创建。
gcloud CLI
如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI。
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "asymmetric-encryption" \ --default-algorithm "rsa-decrypt-oaep-2048-sha256"
将 key 替换为新密钥的名称。将 key-ring 替换为密钥将要存放到的现有密钥环的名称。将 location 替换为密钥环的 Cloud KMS 位置。
如需了解所有标志和可能值,请使用 --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。
通过调用 CryptoKey.create
创建非对称解密密钥。
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location-id/keyRings/key-ring-id/cryptoKeys?crypto_key_id=crypto-key-id" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data '{"purpose": "ASYMMETRIC_DECRYPT", "versionTemplate": {"algorithm": "algorithm"}}'
将 algorithm 替换为 ASYMMETRIC_DECRYPT
操作的相应算法,例如 RSA_DECRYPT_OAEP_2048_SHA256
。
创建非对称签名密钥
请按照以下步骤在指定的密钥环和位置上创建非对称签名密钥。这些示例使用 software
保护级别和 rsa-sign-pkcs1-2048-sha256
首次创建密钥时,密钥初始版本的状态为待生成。当状态变为已启用时,您便可以使用该密钥。如需详细了解密钥版本状态,请参阅密钥状态。
控制台
转到 Google Cloud 控制台中的密钥管理页面。
点击您要为其创建密钥的密钥环的名称。
点击创建密钥。
在您要创建哪种类型的密钥?中,选择生成的密钥。
在密钥名称字段中,输入密钥的名称。
点击保护级别下拉列表,然后选择软件。
点击用途下拉列表,然后选择非对称签名。
点击算法下拉列表,然后选择 2048 位 RSA - PKCS#1 v1.5 填充 - SHA256 Digest。您可以在将来的密钥版本上更改此值。
点击创建。
gcloud CLI
如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI。
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "asymmetric-signing" \ --default-algorithm "rsa-sign-pkcs1-2048-sha256"
将 key 替换为密钥的名称。将 key-ring 替换为密钥将要存放到的现有密钥环的名称。将 location 替换为密钥环的 Cloud KMS 位置。
如需了解所有标志和可能值,请使用 --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。
通过调用 CryptoKey.create
创建非对称签名密钥。
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location-id/keyRings/key-ring-id/cryptoKeys?crypto_key_id=crypto-key-id" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data '{"purpose": "ASYMMETRIC_SIGN", "versionTemplate": {"algorithm": "algorithm"}}'
将 algorithm 替换为 ASYMMETRIC_SIGN
操作的相应算法,例如 RSA_SIGN_PSS_2048_SHA256
。
控制对非对称密钥的访问权限
签名者或验证者需要对非对称密钥具有适当的权限或角色。
对于将执行签名的用户或服务,授予对非对称密钥的
cloudkms.cryptoKeyVersions.useToSign
权限。对于将检索公钥的用户或服务,授予对非对称密钥的
cloudkms.cryptoKeyVersions.viewPublicKey
权限。进行签名验证时需要公钥。
如需了解 Cloud KMS 版本中的权限和角色,请参阅权限和角色。
后续步骤
- 了解如何创建和验证签名。
- 了解如何使用 RSA 密钥对数据进行加密和解密。
- 了解如何检索公钥。