Convertendo pfx em pem usando o openssl

109

Como gerar um .pem certificado CA e um certificado de cliente a partir de um arquivo PFX usando OpenSSL.

novo bie
fonte

Respostas:

107

Você pode usar a ferramenta de linha de comando OpenSSL. Os seguintes comandos devem resolver o problema

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

Se você deseja que seu arquivo seja protegido por senha, etc., existem opções adicionais.

Você pode ler toda a documentação aqui .

Jay
fonte
191

Outra perspectiva para fazer isso no Linux ... aqui é como fazer para que o único arquivo resultante contenha a chave privada descriptografada para que algo como o HAProxy possa usá-la sem solicitar a senha.

openssl pkcs12 -in file.pfx -out file.pem -nodes

Em seguida, você pode configurar o HAProxy para usar o arquivo file.pem.


Esta é uma edição da versão anterior onde eu tinha essas várias etapas até perceber que a opção -nodes simplesmente ignora a criptografia de chave privada. Mas estou deixando aqui, pois pode apenas ajudar no ensino.

openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
  1. A primeira etapa solicita a senha para abrir o PFX.
  2. A segunda etapa solicita que você também crie uma frase secreta para a chave.
  3. A terceira etapa solicita que você insira a senha que acabou de criar para armazenar descriptografada.
  4. O quarto reúne tudo em um arquivo.

Em seguida, você pode configurar o HAProxy para usar o arquivo file.combo.pem.

A razão pela qual você precisa de 2 etapas separadas onde você indica um arquivo com a chave e outro sem a chave, é porque se você tiver um arquivo que possui a chave criptografada e descriptografada, algo como o HAProxy ainda solicita que você digite a senha quando ele o usa.

user2415376
fonte
Não gastei muito tempo para me familiarizar intimamente com o openssl, mas a conversão do pem não incluiu a chave privada. A edição forneceu detalhes sobre como mesclar o certificado e a chave em um arquivo pem, exatamente o que eu precisava.
ebt
Em sistemas Windows, use tipo em vez de cat
hupseb
No Windows, esta versão do OpenSSL é fácil de usar para coisas como esta: slproweb.com/products/Win32OpenSSL.html
Helge Klein
As etapas acima funcionaram bem para converter um PFX em PEM. No entanto, tive que realizar uma etapa adicional: abrir o arquivo PEM nokey em um editor de texto e mover o último certificado da cadeia para o início do arquivo. Caso contrário, o nginx geraria um erro ao reclamar dos certs e se recusaria a usá-los.
EugeneRomero
Nesse caso, você pode reordenar o comando cat para colocá-lo primeiro. como: cat arquivo.key arquivo.nokey.pem> arquivo.combo.pem A menos que o próprio arquivo.key tenha vários na ordem errada. Mas em qualquer caso, você provavelmente poderia reorganizar as coisas programaticamente.
user2415376 01 de
11

Apesar de as outras respostas serem corretas e bem explicadas, encontrei algumas dificuldades em entendê-las. Aqui está o método que usei ( retirado daqui ):

Primeiro caso: para converter um arquivo PFX em um arquivo PEM que contém o certificado e a chave privada:

openssl pkcs12 -in filename.pfx -out cert.pem -nodes

Segundo caso: para converter um arquivo PFX em arquivos PEM de chave pública e privada separados:

Extrai a chave privada de um PFX para um arquivo PEM:

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

Exporta o certificado (inclui apenas a chave pública):

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

Remove a senha (paráfrase) da chave privada extraída (opcional):

openssl rsa -in key.pem -out server.key
Mohammed Noureldin
fonte