我希望将 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 密钥执行相同的步骤,一切都很好。
我究竟做错了什么?
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 支持确认了这一点)