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