Como criar um certificado X.509 com OpenSSL apenas a partir de uma chave pública?
Neste cenário, tenho apenas a chave pública a ser certificada (formato PEM) e preciso criar um certificado X.509 a partir dela. Esta chave pública fornecida deverá estar no SubjectPublicKeyInfo
certificado X.509. A chave privada da chave pública a ser certificada não está disponível neste cenário!
Mas, é claro, a chave do emissor (CA), que será usada para assinar o certificado, está disponível – incluindo a chave privada. Entendo que preciso de uma chave privada para assinar o certificado 😏
Agora, entendo que a chave pública a ser certificada geralmente está envolvida em um CSR. E que o CSR geralmente é assinado pela chave privada da chave pública a ser certificada . Mas, como dito antes, não tenho aqui um CSR, apenas a chave pública "simples" a ser certificada . Tecnicamente, isso não deveria ser um problema. Mas o OpenSSL pode criar um certificado X.509 dessa forma de alguma forma?
A coisa mais próxima que encontrei é:
openssl x509 -new -key ca_key.pem -force_pubkey tbs_pubkey.pem -subj "/CN=Test"
Infelizmente, o comando acima gera o que parece ser um certificado "autoassinado" que contém a chave pública from tbs_pubkey.pem
e que é assinado pela chave privada from ca_key.pem
, portanto a assinatura do certificado "autoassinado" resultante é na verdade inválida... ☹️