Eu tenho o OpenSSL x64 no Windows 7, que baixei do openssl-for-windows no Google Code . Estou tentando executar:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem"
mas eu recebo um erro.
unable to load private key
Como extrair o certificado no PEM da loja PKCS # 12 usando o OpenSSL?
Respostas:
Experimentar:
Depois disso você tem:
Para colocar o certificado e a chave no mesmo arquivo, use o seguinte
Se você precisar inserir a senha do PKCS # 12 diretamente da linha de comando (por exemplo, um script), basta adicionar
-passin pass:${PASSWORD}
:fonte
openssl pkcs12 -in path.p12 -out newfile.pem
Você só precisa fornecer uma senha. Você pode fazê-lo na mesma linha de comando com a seguinte sintaxe:
Você será solicitado a fornecer uma senha para criptografar a chave privada no seu arquivo de saída. Inclua a opção "nós" na linha acima se desejar exportar a chave privada não criptografada (texto sem formatação):
Mais informações: http://www.openssl.org/docs/apps/pkcs12.html
fonte
Se você pode usar o Python, é ainda mais fácil se você tiver o
pyopenssl
módulo. Aqui está:fonte
file
e nãoopen
? Eu só quero entendê-la como eu estou indo para usá-lo no futuro (para simplificar a minha openssh solução vocação de comando)open("push.p12", 'rb').read()
.with open("push.pem", "wb") as fobj: fobj.write(crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate()))
para escrever o certificado ewith open("push.key", "wb") as fobj: fobj.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey()))
a chave.Eu tinha um arquivo PFX e precisava criar o arquivo KEY para NGINX, então fiz isso:
Então eu tive que editar o arquivo KEY e remover todo o conteúdo até
-----BEGIN PRIVATE KEY-----
. Depois disso, o NGINX aceitou o arquivo KEY.fonte
Se você precisar de um arquivo PEM sem nenhuma senha, poderá usar esta solução.
Apenas copie e cole a chave privada e o certificado no mesmo arquivo e salve como .pem.
O arquivo será parecido com:
Essa foi a única maneira que encontrei para enviar certificados para dispositivos Cisco para HTTPS.
fonte