Convertir certificado PFX a CRT

Si disponemos de un certificado en entornos Windows y queremos utilizar un certificado en otro tipo de dispositivos, por ejemplo un wilcard (*.midominio.com) podemos desglosar en dos partes utilizando OpenSSL:

openssl pkcs12 -in certificadoCompleto.pfx -nocerts -out llaveSegura.key

De este modo tenemos en un archivo la parte correspondiente a la clave privada de forma encriptada (BEGIN ENCRYPTED PRIVATE KEY). Por otro lado tenemos el certificado firmado:

openssl pkcs12 -in certificadoCompleto.pfx -clcerts -nokeys -out certificado.crt

Si necesitamos las claves sin encriptar (BEGIN RSA PRIVATE KEY), cuidado donde guardar este tipo de ficheros, podemos hacerlo mediante:

openssl rsa -in llaveSegura.key -out llaveNoSegura.key

Con estas 2+1 partes podremos instalar el certificado, por ejemplo en PLESK:

 

 

 

 

Exportación de certificado X.509 codificado en PEM

La digitalización en la administración pública no lleva precisamente un ritmo rápido… y tampoco lo ponen fácil a usuarios finales…

Veremos como para dar de alta un proveedor en FACe, o gestionar su renovación, nos solicitan certificado en formato PEM. Por simplificar, tal como en un fichero de texto Word o una hoja de Excel tenemos diferentes formatos y versiones con los que podemos trabajar, con el certificado nos pasa lo mismo.

En este caso PEM se codifica en Base64 encerrado entre la cabecera «—–BEGIN CERTIFICATE—–» y el fin de contenido con «—–END CERTIFICATE—–«.

Sin entrar en detalles técnicos, por ilustrar con un ejemplo, el texto «Este frase sería codificada» en base 64 contendría: «RXN0ZSBmcmFzZSBzZXLDrWEgY29kaWZpY2FkYQ==»

Este tipo de certificados se basan en el estándar «Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile» siguiendo la normativa RFC 5280. Gracias a ello podemos identificar el propietario, emisor (Autoridad de Certificación), fecha de caducidad, fecha de misión… basándonos en infraestructura de clave pública (PKI – Public Key Infraestructure)

Por tanto lo que nos están pidiendo es un «certificado X.509 codificado en formato PEM».
En un escenario habitual en un entorno Windows donde tenemos almacenado el certificado accedemos ejecutando el comando «mmc.exe» (existen otras opciones de visualización pero esta funciona en todas las versiones de Windows hasta ahora)

Nos aparecerá una ventana de consola, y bajo la opción del menú «Archivo» la opción: «Agregar o quitar complemento»

A continuación seleccionamos «Certificado» entre los complementos disponibles y pulsamos en agregar: 

Seleccionamos «Mi cuenta de usuario» teniendo en cuenta que los certificados mostrados son los del usuario que ha iniciado sesión en el equipo:

Dentro de «Personal» / «Certificados» nos mostrará todos los disponibles del usuario actual. El icono del listado, muestra una pequeña llave en aquellos certificados de los que disponemos la parte privada:

Haciendo clic con el botón derecho sobre el certificado pulsamos en «Todas las tareas» y «Exportar». Debemos seleccionar el formato de codificación X.509, no debemos exportar la clave privada en este caso:

Indicamos una ruta de nuestro ordenador para guardar el certificado, pulsando con el botón derecho sobre el certificado «Abrir con…» y seleccionamos el editor de texto Bloc de notas nos mostrará:

Con este contenido ya podemos copiar y pegar en la página de FACe de proveedores.

 

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: