【发布时间】:2022-01-25 11:05:44
【问题描述】:
用例: 客户端将创建公钥/私钥并向我提供公钥。我想用公钥加密(RSA)消息并将消息发送给客户端。客户端将使用私钥解密消息
密钥生成: 客户端使用 openssl 生成了公钥/私钥。下面给出的命令。
openssl genrsa -des3 -out private.pem 2048
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
挑战:我想把公钥保存在某个地方。既然我们已经在使用 Google KMS,有没有办法只维护 Google KMS 中的公钥? 我已经通过https://cloud.google.com/kms/docs/importing-a-key#create_importjob 但是 以下命令失败,gcloud.kms.keys.versions.import) INVALID_ARGUMENT: Wrapped key is too short.
使用的导入命令:
gcloud kms keys versions import \
--import-job {job_name} \
--location {location} \
--keyring {keyring} \
--key {key_name} \
--algorithm "rsa-decrypt-oaep-2048-sha256"\
--rsa-aes-wrapped-key-file public.pem
我也无法通过执行以下命令将公钥转换为 PCKS#8 DER 格式。获取 /crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER \
-in /path/to/publicKey.pem \
-out /path/to/publicKey_formtted.pem
【问题讨论】:
-
如果您的目标是将公钥存储在托管存储位置,请考虑使用 Google Cloud Secret Manager。 KMS 是存储公钥的错误服务。注意:要将 PEM 格式的 RSA 公钥转换为 DER:openssl pkey -pubin -in publicKey.pem -outform der -out publicKey.der 但是,通常最好将公钥保存在 PEM 中格式,除非需要二进制格式。另一个项目,在大多数情况下您不需要保护公钥,它们被称为 public 是有原因的。它是必须保护的私钥。
标签: google-cloud-platform rsa public-key google-cloud-kms