En diversos WebService que ofrece Smarter Web, hace referencia un PFX.
¿Qué es un PFX?
Un archivo PFX no es más que el Certificado y Llave privada en un solo archivo. Podríamos decir que una fusión de ambos archivos.
¿Como se crea este archivo PFX?
Para la generación de este archivo, necesitaremos un certificado (*.cer) y su llave privada correspondiente (*.key), teniendo esto, además necesitaremos la utilería para OpenSSL. Para Windows lo descargaremos de https://indy.fulgan.com/SSL/
Una vez teniendo descomprimido, abriremos la consola en windows. Para ello iremos a “inicio” y buscaremos “cmd” y ejecutaremos la consola o “Command Prompt”, después nos posicionaremos en el mismo directorio donde descomprimiste el .zip. Para este ejemplo utilizaré la ruta “c:\out\openssl”
Y estando utilizaremos los siguientes comandos.
1 |
openssl pkcs8 -inform der -in CSD_Pruebas_CFDI_LAN7008173R5.key -passin pass:12345678a -out key.pem |
Donde tenemos “CSD_Pruebas_CFDI_LAN7008173R5.key” como la llave privada, “12345678a” como el password de la llave privada y “key.pem” como el archivo de salida.
1 |
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.
1 |
openssl pkcs12 -export -in cer.pem -inkey key.pem -out LAN7008173R5.pfx |
Al ejecutar esté último comando, nos solicitara un password, dicho password es el que tendrá el PFX. En este caso yo proporcione el mismo que tiene la llave privada (12345678a). De igual manera nos solicitara confirmar el password. (En la consola no se mostrará lo que escribamos como password, pero si lo tiene en cuenta para la generación del mismo).
Como paso final, en los WebService que ofrecemos normalmente solicitamos este archivo en el request como base64. Esto lo podemos hacer en nuestro lenguaje de programación directamente o a través de OpenSSL.
1 |
openssl enc -base64 -in LAN7008173R5.pfx -out LAN7008173R5.txt |
Y esto nos generará un archivo .txt con la encriptación de los binarios del PFX en base64.