![Como posso exportar a chave privada de uma cadeia de certificados?](https://rvso.com/image/1414689/Como%20posso%20exportar%20a%20chave%20privada%20de%20uma%20cadeia%20de%20certificados%3F.png)
Eu crio um keystore e a partir desse keystore eu gero um arquivo CSR e quando recebo o Certificado Assinado da CA, importo certificados raiz e intermediários para meu keystore e finalmente meu certificado assinado. Depois de adicionar o certificado assinado, recebi a resposta "a resposta do certificado foi instalada no keystore". Neste formato posso usar meu keystore no Tomcat, porém, para outro contêiner de aplicação preciso apenas de uma chave privada contendo o arquivo codificado em pem. E
keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs -srcstoretype JKS -deststoretype PKCS12
openssl pkcs12 -in server.pkcs -out server.pem
parece não funcionar. Estou recebendo um arquivo pem que contém apenas informações de certificado e não uma chave privada.
Então, é possível exportar a chave privada após estabelecer uma cadeia de certificados? Se for como?
Responder1
O comando openssl pkcs12 que você usou também deve exportar a chave privada
openssl pkcs12 -in server.pkcs -out server.pem
Acho que o arquivo de entrada p12 não contém a chave privada.
Tem certeza de que não há algum tipo de aviso ao exportar a chave do arquivo p12.
Uma coisa importante é que parece que o JKS suporta uma senha de chave separada e uma senha de armazenamento. Ao exportar o p12 do JKS pode acontecer que a senha do p12 seja diferente da senha da chave. Parece que isso não é suportado pelo openssl (apenas tentei) e resulta em um erro de "descriptografia incorreta". Você deve se certificar de que a senha da chave é igual à senha p12.
Responder2
A chave privada de exportação de uma cadeia de certificados que usei nas seguintes consultas,
keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs
-srcstoretype JKS -deststoretype PKCS12
openssl pkcs12 -in thekeystore.p12 -nocerts -nodes -out serverkey.pem
Portanto, a única diferença é adicionar -nodes -nocerts
parâmetros, e funciona perfeitamente, também funciona para certificados autoassinados