我希望使用 CloudHSM 作为中间 CA。为此,我需要生成一个密钥对并使用根(离线 HSM)CA 对其进行签名。我们使用 ECDSA。
但是,当我从 ECC 密钥对生成 CSR 时,验证失败。以下是我所做的:
genECCKeyPair -i 2 -l intermediate-ca -nex
getCaviumPrivKey -k 42 -out intermediate-ca.key
openssl req -engine cloudhsm -new -key intermediate-ca.key -out intermediate-ca.csr -subj "/CN=Intermediate CA"
openssl req -in intermediate-ca.csr -verify -noout
报告如下:
verify failure
139822323439520:error:0D0C5006:asn1 encoding routines:ASN1_item_verify:EVP lib:a_verify.c:249:
如果我尝试签署 CSR,openssl 会报告Signature did not match the certificate request
如果我使用 RSA 密钥执行相同的步骤,一切都会正常。
我究竟做错了什么?
答案1
CloudHSM 的 OpenSSL 引擎不支持 ECC 密钥。
这是隐含的https://docs.aws.amazon.com/cloudhsm/latest/userguide/openssl-library.html(它不在列表中)。
让我困惑的是https://docs.aws.amazon.com/cloudhsm/latest/userguide/ki-openssl-sdk.html#ki-openssl-4意味着它是支持的。
不是。请使用其他客户端库之一(JCE、PKCS#11、KSP 或 CNG)。
(我已与 AWS 支持确认了这一点)