¿Cómo crear un PFX?

En diversos Web Services que ofrece Smarter Web se hace referencia al archivo .PFX, aquí te explicamos su utilidad.

¿Qué es un PFX?

Es un formato binario que se usa a menudo para almacenar elementos de una cadena de confianza, como el certificado o la llave privada en un solo archivo encriptable.

Un archivo .PFX no es más que el certificado y llave privada en el mismo archivo, podríamos decir que es una fusión de ambos.

¿Cómo se crea el archivo PFX?

Para la generación de este archivo necesitaremos un certificado (*.cer) y su respectiva llave privada (*.key), también necesitaremos el paquete de herramientas OpenSSL.

Para Windows lo descargaremos de https://indy.fulgan.com/SSL/ o desde su página oficial https://www.openssl.org/.

Una vez descomprimido, abriremos la consola de Windows, para ello iremos a “Inicio” y buscaremos “CMD” o “Símbolo del sistema“, ejecutaremos y después nos posicionaremos en el mismo directorio donde descomprimimos él fichero .zip.

Para este ejemplo utilizaremos la ruta “c:\out\openssl”.

Consola de Windows dentro del directorio

Dentro de la consola utilizaremos los siguientes comandos:

openssl pkcs8 -inform der -in CSD_Pruebas_CFDI_LAN7008173R5.key -passin pass:12345678a -out key.pem

Donde “CSD_Pruebas_CFDI_LAN7008173R5.key” es la llave privada, “12345678a” el password de la llave privada y “key.pem” como el archivo de salida resultante.

openssl x509 -inform der -in CSD_Pruebas_CFDI_LAN7008173R5.cer -out cer.pem

En este caso tenemos “CSD_Pruebas_CFDI_LAN7008173R5.cer” como el certificado y “cer.pem” como el archivo de salida.

Ejecutamos el último comando para realizar la exportación y generar el archivo .PFX.

openssl pkcs12 -export -in cer.pem -inkey key.pem -out LAN7008173R5.pfx

Al ejecutar el último comando se nos solicitara un password, este será el que se asigne al archivo .PFX, en este caso y a manera de ejemplo proporcionamos el mismo que tiene la llave privada (12345678a).

De igual manera nos solicitara confirmar el password. (En consola no se visualizará el texto escrito para el password, pero si es considera para la generación del mismo).

Secuencia de ejecución de los comandos

Como paso final, en los Web Services que ofrece Smarter Web normalmente se solicita el archivo .PFX dentro del request como base64, esto lo podemos hacer en nuestra implementación mediante código o a través de OpenSSL con el siguiente comando.

openssl enc -base64 -in LAN7008173R5.pfx -out LAN7008173R5.txt

Esto nos generará un archivo .txt con la encriptación de los binarios del PFX en base64.


📖 Artículos de apoyo:

Trabajar con OpenSSL

Obtén CSD


How useful was this post?

Click on a star to rate it!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Updated on septiembre 29, 2023

Related Articles