Creación de PFX a partir de clave pública y privada

En entornos Windows la encapsulación de certificado en ocasiones suele ser algo complicada en algunos contextos. En este en concreto, plantemos unir un certificado CER/CRT (es lo mismo) recibido con la clave pública con otro archivo con las claves privadas en un único archivo PFX

En ocasiones se utilizan diferentes extensiones para los certificados, lo primero es identificar cada fichero, podemos abrirlos con bloc de notas y reconocer las cabeceras:

Certificado público (micertificado.cer):

-----BEGIN CERTIFICATE-----
MIIFszCCBJugAwIBAgIQCn/RxfJgDNYmoD7jyCSfGjANBgkqhkiG9w0BAQsFADBe
...BLOQUE DE TEXTO...
KPYJupIYuFSDoL/C77KF9zntk1gft5o=
-----END CERTIFICATE-----

Clave privada asociada (clave.key):

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAzHvXgg7VbCHXDSihNDx3q5GrNhDhnw2IAU/z259t6wi+gTjv
..BLOQUE DE TEXTO...
PEMYrxRR46jUuQqNpqYqYk5Trg6dtjKf6/82caESpr1vYG0uErwXTow=
-----END RSA PRIVATE KEY-----

Necesitaremos varias herramientas:

  1. pvk2pfx en SDK Windows, en este caso de Windows 10 pero esta disponible para otras versiones
  2. Utilidad PVK de Stephen N Henson [mirror 1]

A partir de nuestro archivo de claves privadas (clave.key) generaremos un archivo PVK ejecutando (C:\Program Files (x86)\Windows Kits\10\bin\x64\):

PVK.exe -in clave.key -topvk -out misclaves.pvk -strong

Nos pedirá que introduzcamos una contraseña. Con los dos ficheros misclaves.pvk + micertificado.cer ejecturemos contra la herramienta del SDK asegurando las rutas de acceso:

pvk2pfx.exe /pvk misclaves.pvk /spc micertificado.cer /pfx MiCertificadoCompleto.pfx

 

Ya tendremos unificado en un fichero toda la información.

 

Manual Pvk2Pfx


Exportar certificados SSL con CA intermedias incluidas

Los certificados SSL emitidos que requieran de entidades intermedias, a la hora de exportar es posible añadirlos en un único PFX (Personal Information Exchange). En cualquier equipo con el certificado que queremos exportar y el certificado intermedio de confianza instalado (en este caso RapidSSL)

Seleccionamos exportar con la clave privada para tener el archivo PFX con contraseña correspondiente:

Debemos seleccionar "Export all extended properties" para incluir toda la información en un único archivo:

Si exportamos, con y sin, esta opción veremos que el archivo generado difiere en tamaño igualmente. Ya podremos importar sin problemas en cualquier dispositivo, servicio cloud o similar.

 

Certificados SSL

Cuando visitamos un sitio web y nos aparece en el navegador el prefijo https:// nos indica que:

  • Existe un certificado no caducado: los certificados caducan cada cierto tiempo o son revocados/cancelados en la lista de comprobación de sus emisores.
  • Existe un certificado digital emitido para este sitio: la dirección URL de la web coincide la del certificado.
  • Existe un certificado emitido por una entidad de confianza: confiamos en un emisor y sus listas.

¿Quiere decir que el sitio web es seguro? No. La lista de entidades emisoras de certificados de confianza es diferente para Microsoft, Firefox, Apple... con sus correspondientes almacenes. Es perfectamente posible que recibamos con Chrome un aviso de seguridad y con Firefox no, teniendo instalados ambos en el mismo equipo.

Las entidades de certificación a su vez puedes emitir certificados intermedios a otras entidades, y esta emitir los suyos. Algo así como diría Groucho Marx: "la parte contratante de la primera parte será considerada como la parte contratante de la primera parte"

Dado que se emiten y cancelan millones de certificados cada día, tanto Microsoft como Apple van introduciendo las actualizaciones de entidades automáticamente en sus sistemas operativos, y las entidades, con sus certificados de sitios e intermedios.

En la mayoría de casos este funcionamiento predeterminado facilita el uso general y acceso a sitios web, aunque podemos hacerlo de forma manual y desactivar esta opción en Windows:

Si pese a ello seguimos pensando que todo esta bien, tenemos la falsa idea de seguridad con el candado de nuestro navegador, pongamos otro ejemplo; hemos visto que la lista de entidades de certificación es difícil de gestionar tanto para empresas como usuarios finales, sería posible con un ataque main-in-the-middle con un certificado válido interceptar el tráfico SSL: sí.

 

Lecturas recomendadas: