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
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é.