Converter um certificado PEM/CRT + KEY para PFX

Para converter um certificado que está no formato PEM/CRT juntamente com o arquivo de chave privada (KEY) em um arquivo PFX, que pode ser usado de forma mais simplificada em ambientes Windows/IIS, precisamos do OpenSSL. Caso esteja usando uma máquina com Linux, ele já estará disponível. Para instalar no Windows baixe a partir deste site.

O comando abaixo é que faz a mágica.

# openssl pkcs12 -export -out certificado.pfx -inkey privateKey.key -in certificado.pem -certfile CACert.crt

Onde:
– certificado.pfx: arquivo a ser gerado.
– certificado.pem: arquivo com o certificado no formato PEM. Pode estar com a extensão .crt também.
– privateKey.key: arquivo com a chave privada do certificado.
– CAcert.crt: arquivo com o certificado da entidade certificadora e os certificados intermediários. Este item não é obrigatório.

Obs.: um erro que costuma ocorrer é quando algum dos arquivos de entrada (pem, key ou crt) estão codificados com UTF8 BOM. O OpenSSL não consegue ler corretamente esse formato. Nesse caso edite o arquivo com algum editor de texto avançado, como o Notepad++, e altere a codificação para UTF8.

Converter um certificado PFX para o formato PEM

Podemos converter um arquivo de certificado PFX em dois tipo de arquivos PEM: deixando o certificado e a chave privada no mesmo arquivo, conhecido como PEM combinado, ou separando o certificado e a chave privada em arquivos separados. Nos dois casos iremos utilizar o utilitário OpenSSL que possui compilações tanto para Linux quando para Windows.

Para converter um certificado PFX em um arquivo PEM combinado, utilize o comando abaixo.

# openssl pkcs12 -in certificado.pfx -out certificado.pem -nodes

Onde:
– certificado.pfx: o arquivo de entrada no formato PFX.
– certificado.pem: o arquivo PEM que será gerado, contendo tanto o certificado quando a chave privada.

Para converter o certificado PFX para arquivos PEM separados (certificado + chave privada), utilize os comandos abaixo.

Extraindo a chave privada:

# openssl pkcs12 -in certificado.pfx -nocerts -out certificado.key -nodes

Onde:
– certificado.pfx: o arquivo de entrada no formato PFX.
– certificado.key: o arquivo gerado com a chave privada do certificado.

Extraindo o certificado:

# openssl pkcs12 -in certificado.pfx -clcerts -nokeys -out certificado.pem

Onde:
– certificado.pfx: o arquivo de entrada no formato PFX.
– certificado.pem: o arquivo que será gerado com o certificado no formato PEM.

Obs.: Importante ressaltar que os arquivos PEM gerados com a chave privada não estarão protegidos por senha devido ao uso do parâmetro “-nodes”.