Solucionando Problemas de Compatibilidad del Certificado de la FNMT

Si tienes un certificado almacenado en un fichero .p12, probablemente no lo puedas importar en un navegador sin realizar algunos cambios primero.

Hace unos pocos días tuve que renovar mi certificado digital de la Fábrica Nacional de Moneda y Timbre (España). Como hacía menos de 5 años que me había identificado personalmente en el Consulado Español en Sydney, no tuve que hacer gran cosa y pude realizar todo el proceso en Fedora, siguiendo las instrucciones correspondientes.

Sin embargo, el fichero de copia de seguridad del certificado (formato PKCS #12, de extensión .p12) que generan las herramientas oficiales usa una versión de los algoritmos de cifrado que está considerada obsoleta. Esto genera un fichero aparentemente inservible, imposible de usar en la mayoría de navegadores modernos, como Firefox en mi caso.

Un cuadro de diálogo de error proporcionado por Firefox, en este caso funcionando en Fedora. Dice textualmente "Failed to decode the file. Either is not in PKCS #12 format, has been corrupted, or the password you entered was incorrect". Tiene un botón "OK".
"Fallo al decodificar el fichero. O bien no está en formato PKCS #12, o está corrupto, o la contraseña proporcionada es incorrecta" es el error proporcionado por Firefox al intentar importar el certificado desde el fichero .p12 generado por las herramientas de la FNMT.

Esto te puede estar afectando ya mismo aunque no uses Linux, y aunque no hayas renovado nada.

  • El problema se debe a un cambio en los estándares de seguridad de los navegadores, que busca elevar el nivel de seguridad de este tipo de cosas. Si tienes esta copia de seguridad almacenada en tus archivos y quieres importarla en un navegador moderno, meses o años después de haberla generado, probablemente tengas este problema.
  • Al ser algo relacionado con la seguridad de forma general, el problema no debería estar limitado a Firefox ni a Linux, y puede estar pasando ahora o en un futuro cercano con Safari, Chrome o Edge en Windows o en macOS.

Los siguientes comandos en GNU/Linux producen un fichero certificado.p12 que podrás importar en tu navegador. Antes de empezar, algunas notas:

  • VISO_CARRERA_GABRIEL___[NIF].p12 es el archivo de certificado con problemas, así que tendrás que usar el nombre de tu propio fichero.
  • Los ficheros .p12 están protegidos con contraseña. Necesitarás introducir una contraseña para operar con el fichero .p12 con problemas, y fijar una nueva contraseña en el fichero .p12 resultado del proceso. Esto no está representado en los comandos siguientes.
openssl pkcs12 -legacy -in VISO_CARRERA_GABRIEL___[NIF].p12 -clcerts -nokeys -out certificado.crt
openssl pkcs12 -legacy -in VISO_CARRERA_GABRIEL___[NIF].p12 -nocerts -out cifrado.key
openssl rsa -in cifrado.key -out privado.key
openssl pkcs12 -export -in certificado.crt -inkey privado.key -out certificado.p12

Un comando por línea.

Una vez hecho esto, certificado.p12 podrá ser importado en tus navegadores, sin problema alguno.

Este proceso no me lo he inventado yo, ni lo he descubierto por mi mismo; lo he encontrado en esta respuesta en el foro de la comunidad de Fedora.