Respuestas:
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í .
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
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.
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í ):
openssl pkcs12 -in filename.pfx -out cert.pem -nodes
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