Com base na orientação de um consultor, estou tentando implementar uma PKI com um HSM. Criei com sucesso um par assimétrico dentro do HSM e exportei a chave pública para um arquivo.
A partir daí, devo usar essa chave pública para criar um certificado e um CSR que enviarei de volta ao meu HSM para assinatura com a chave privada selada. É aqui que estou preso.
De preferência usando OpenSSL, como faço para conseguir isso? Já passei pelos comandos "openssl req" e "openssl x509" e não consigo descobrir como devo gerar qualquer certificado ou CSR associado a esta chave pública.
openssl-x509 -new -force_pubkey parecia promissor para fazer um certificado, mas o comando requer chaves privadas, o que não faz sentido para mim. A chave privada para assinar o item fica bloqueada no HSM para assinatura posterior.
openssl-req é o que preciso para criar o CSR, mas não há nada nesta API para associar esta chave pública ou certificado existente à solicitação.
Sinto que atingi alguma limitação da CLI do OpenSSL ou não tenho muito conhecimento sobre como devo remendar o CSR para assinatura pelo HSM.
Geralmente, você acessa o HSM por meio de sua interface PKCS#11. OpenSSL fornece o mecanismo ou interface do provedor para isso.
Você usaria algo como o seguinte para criar um certificado autoassinado:
Observe que o valor usado para a
-key
opção dependerá do seu HSM. Um mecanismo de busca irá ajudá-lo nisso.Se você estiver executando isso no Linux, provavelmente precisará instalar o mecanismo OpenSSL pkcs11 (
libengine-pkcs11-openssl
no Debian/Ubuntu e variantes).À parte, espero que seu consultor tenha apontado que o OpenSSL não se destina a operar uma autoridade de certificação real. A página de manual do openssl-ca ainda tem um aviso nesse sentido. Além do aviso sobre a falta de bloqueio no arquivo de banco de dados, o uso do OpenSSL não fornece rastreamento auditável de eventos, nem separação de funções. Isso é bom em um ambiente de laboratório, mas não se você estiver tentando criar um sistema PKI confiável.