Creacion de Perfiles de Certificado Digital PFX

Crear Archivo de Certificado .PFX Usando OPENSSL

El formato PKCS #12 o PFX es un formato binario para almacenar el certificado del servidor, cualquier certificado intermedio y la clave privada en un solo archivo encriptable. Los archivos PFX generalmente se encuentran con las extensiones .pfx y .p12. Los archivos PFX se utilizan normalmente en maquinas Windows para importar y exportar certificados y claves privadas.

Requisitos

  • La clave privada original utilizada para el certificado
  • Un archivo PEM (.pem, .crt, .cer) o PKCS #7/P7B (.p7b, .p7c)
  • OpenSSL

Fuente: Nodored

Vamos a preparar la maquina para ello

Primero necesitamos instalar OPENSSL, para este punto voy a usar el gestor de paquetes Chocolatey, vamos a instalar usando powerhell como administrador.

PS C:\Windows\system32\WindowsPowerShell\v1.0> powershell.exe -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))"

luego agregamos chocolatey a nuestra PATH, escribimos en inicio de windows variables de entorno o como estamos en la terminal de powershell usamos esta.

PS C:\Windows\system32\WindowsPowerShell\v1.0> SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

ahora vamos a instalar openssh usando chocolatey, desde el terminal de powershell o cmd, recuerde como administrador.

C:\OpenSSL>choco install openssl

si el OPENSSL se ha instalado correctamente con choco. vamos a crearnos un directorio de trabajo, creare una carpeta llamada OPENSSL y dentro de ella nos creamos la siguiente estructura de carpetas para trabajar ordenadamente

C:\OpenSSL>md certs,crl,csr,newcerts,private

ahora vamos a buscar un archivo de configuracion, cuando instalaste openssl por defecto se ha creado en la siguiente ruta.

El archivo se llama openssl.cfg vamos a copiar a la carpeta de hemos creado llamado OpenSSL en la raiz. como se observa en la imagen.

de hecho hay puntos que deberiamos configurar a nuestro gusto, pero para esta practica solo cambiaremos el lugar donde hemos creado nuestro carpeta de trabajo y la linea 83 debe quedar.

policy = policy_anything

Despues vamos a crear un archivo de texto vacio llamado index.txt el cual se comportara como nuestra base de datos.

Vamos a crear otro archivo sin extension dentro de la carpeta OpenSSL, llamado serial, el cual va actuar como nuestra version.

Vamos a crear el certificado publico para nuestra CA y la llave privada asociada al certificado, es necesario ingresar los datos que consideremos necesarios y una contraseña para privadaCA.key (ejm. kidcode12345).

openssl req -config openssl.cnf -new -x509 -extensions v3_ca -keyout C:/OpenSSL/private/privadaCA.key -out C:/OpenSSL/certs/certificadoCA.crt

Vamos a generar una llave privada para el usuario cliente (el servidor cliente debe generar su llave privada en la carpeta private, te solicitara que coloques una contraseña (ejm. kidcode2023).

openssl genrsa -aes128 -out C:/OpenSSL/private/privadaAngel.key 1024

Vamos a generar una solicitud de firma por parte del servidor cliente. el cliente debe generar una solicitud para que nuestra ropia ca/ (/OpenSSL) le emita el certificado publico firmado. recuerda poner su password de la llave privada cliente (kidcode2023), y completa los datos para el certificado.

openssl req -new -key C:/OpenSSL/private/privadaAngel.key -out C:/OpenSSL/csr/solicitudAngel.csr -config C:/OpenSSL/openssl.cnf

Luego procedemos a firmar la solicitud generada por el usuario angel, te va pedir la password de la clave privada (kidcode12345), finalmente le damos si a las dos ultimas prguntas.

openssl ca -in C:/OpenSSL/csr/solicitudAngel.csr -out C:/OpenSSL/newcerts/certificadoAngel.crt -cert C:/OpenSSL/certs/certificadoCA.crt -keyfile C:/OpenSSL/private/privadaCA.key -config C:/OpenSSL/openssl.cnf

finalmente vamos a convertir un archivo pem y la clave privada a un archivo pfx, ponemos la password de la llave privada cliente (kidcode2023), y ponemos una nueva contraseña para el archivo pfx (pfx2023)

openssl pkcs12 -export -out C:/OpenSSL/newcerts/angel.pfx -inkey C:/OpenSSL/private/privadaAngel.key -in C:/OpenSSL/newcerts/certificadoAngel.crt

y ya esta tenemos nuestra certificado digital en la carpeta newcert con el nombre angel.pfx

Tambien puedes verlo en mi canal Youtube

¿Te ha gustado este artículo? Si quieres, puedes ayudarme a escribir el siguiente artículo. invitándonme a un rico café.