Estou procurando usar o CloudHSM para uma CA intermediária. Para isso, preciso gerar um par de chaves e assiná-lo com a CA raiz (HSM offline). Estamos usando o ECDSA.
No entanto, quando gero um CSR de um par de chaves ECC, ele falha na verificação. Aqui está o que estou fazendo:
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
Este relata:
verify failure
139822323439520:error:0D0C5006:asn1 encoding routines:ASN1_item_verify:EVP lib:a_verify.c:249:
Se eu tentar assinar o CSR, o openssl relataSignature did not match the certificate request
Se eu fizer os mesmos passos com uma chave RSA, está tudo bem.
O que estou fazendo errado?
O mecanismo OpenSSL para CloudHSM não oferece suporte a chaves ECC.
Isso é declarado implicitamente por https://docs.aws.amazon.com/cloudhsm/latest/userguide/openssl-library.html (não está na lista).
O que me confundiu é que https://docs.aws.amazon.com/cloudhsm/latest/userguide/ki-openssl-sdk.html#ki-openssl-4 implica que é suportado.
Não é. Use uma das outras bibliotecas de cliente (JCE, PKCS#11, KSP ou CNG).
(Confirmei isso com o suporte da AWS)