Conversión de pfx a pem usando openssl

109

Cómo generar un .pem certificado de CA y un certificado de cliente a partir de un archivo PFX usando OpenSSL.

nuevo bie
fuente

Respuestas:

107

Puede utilizar la herramienta de línea de comandos OpenSSL. Los siguientes comandos deberían hacer el truco

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

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

Si desea que su archivo esté protegido con contraseña, etc., existen opciones adicionales.

Puedes leer toda la documentación aquí .

Arrendajo
fuente
191

Otra perspectiva para hacerlo en Linux ... aquí está cómo hacerlo para que el archivo único resultante contenga la clave privada descifrada para que algo como HAProxy pueda usarlo sin pedirle una contraseña.

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

Luego puede configurar HAProxy para usar el archivo file.pem.


Esta es una EDICIÓN de la versión anterior en la que tuve estos múltiples pasos hasta que me di cuenta de que la opción -nodes simplemente omite el cifrado de clave privada. Pero lo dejo aquí ya que puede ayudar con la enseñanza.

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. El primer paso le solicita la contraseña para abrir el PFX.
  2. El segundo paso le solicita eso y también crear una frase de contraseña para la clave.
  3. El tercer paso le solicita que ingrese la frase de contraseña que acaba de crear para almacenar descifrada.
  4. El cuarto lo pone todo junto en 1 archivo.

Luego, puede configurar HAProxy para usar el archivo file.combo.pem.

La razón por la que necesita 2 pasos separados en los que indica un archivo con la clave y otro sin la clave, es porque si tiene un archivo que tiene la clave cifrada y descifrada, algo como HAProxy todavía le pide que escriba la frase de contraseña cuando lo usa.

usuario2415376
fuente
No he pasado el tiempo para familiarizarme íntimamente con openssl, pero la conversión pem no incluía la clave privada. La edición proporcionó los detalles sobre cómo fusionar el certificado y la clave en un archivo pem, justo lo que necesitaba.
Ebt
En los sistemas Windows, use type en lugar de cat
hupseb
En Windows, esta versión de OpenSSL es fácil de usar para cosas como esta: slproweb.com/products/Win32OpenSSL.html
Helge Klein
Los pasos anteriores funcionaron bien para convertir un PFX a PEM. Sin embargo, tuve que hacer un paso adicional: abrir el archivo PEM nokey en un editor de texto y mover el último certificado de la cadena a la parte superior del archivo. De lo contrario, nginx arrojaría un error quejándose de los certificados y se negaría a usarlos.
EugeneRomero
En ese caso, podría reordenar el comando cat para ponerlo primero. como: cat file.key file.nokey.pem> file.combo.pem A menos que file.key tenga varios en el orden incorrecto. Pero en cualquier caso, probablemente podría reorganizar las cosas mediante programación.
user2415376
11

A pesar de que las otras respuestas son correctas y están explicadas a fondo, encontré algunas dificultades para entenderlas. Aquí está el método que utilicé ( tomado de aquí ):

Primer caso: para convertir un archivo PFX en un archivo PEM que contenga tanto el certificado como la clave privada:

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

Segundo caso: para convertir un archivo PFX en archivos PEM de clave pública y privada separados:

Extrae la clave privada de un PFX a un archivo PEM:

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

Exporta el certificado (solo incluye la clave pública):

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

Elimina la contraseña (paráfrasis) de la clave privada extraída (opcional):

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