Recuperación de un certificado digital no exportado

Certificado digital Los certificados digitales sirven para buscar y autentificar clientes y servidores. Un certificado digital garantiza la seguridad en las transacciones y en la navegación por Internet verificando la legitimidad de las operaciones de negocio, de las personas y de las organizaciones. Una buena práctica para evitar contratiempos es exportar el certificado con su clave privada asociada protegiendo con una contraseña robusta el fichero exportado. Pero aún si no se cuenta con dicho fichero exportado todavía es posible recuperar un certificado perdido.

En ocasiones el sistema operativo del ordenador que tiene instalado un certificado digital se corrompe y no es posible recuperar dicha instalación de Windows. En otras ocasiones tal vez hemos reinstalado el sistema operativo, o instalado una nueva versión y se nos olvidó exportar nuestro certificado digital. O tal vez lo habíamos exportado pero no incluimos la clave privada asociada o pudiéramos haber olvidado la contraseña o pudiéramos haber eliminado ese usuario del sistema o incluso haberse dañado el fichero exportado. Sea cual sea nuestra situación no está todo perdido si disponemos de una copia de seguridad del perfil del usuario que contenía el certificado y la contraseña de dicho usuario.

Antes de indicar los pasos para la recuperación, sería interesante conocer algunos aspectos de la gestión que Windows hace de los certificados.

Los certificados digitales llevan asociadas una clave privada que sólo el ordenador donde se ha instalado el certificado es capaz de desencriptar y utilizar correctamente. Para lograrlo el sistema operativo se vale de otra clave, denominada la clave maestra, que sólo esa instalación del sistema operativo puede desencriptar desde el perfil de usuario propietario del certificado. Esto es porque la clave maestra se genera a partir del SID del usuario y su contraseña. Es SID de usuario es un identificador único cuyo código sería, por ejemplo, S-1-5-21-000000000-0000000000-000000000-1003. Consta de 2 partes, una correspondiente a la instalación del sistema operativo y otra al usuario. Esta última es la terminación (en nuestro ejemplo el 1003), y el sistema operativo las asigna secuencialmente a partir del 1000 o del 1003 (dependiendo de la versión del sistema operativo). La otra parte, la indicada con ceros en el ejemplo, es el SID de máquina y consiste en una numeración aleatoria generada durante la instalación del sistema operativo en la máquina.

Por tanto si fuéramos capaces de volver a crear una instalación del sistema operativo con el mismo SID de máquina podríamos llegar a obtener el mismo SID de usuario y conociendo la contraseña seríamos capaces de recrear la configuración que permite la desencriptación de la clave maestra, la cual a su vez permitiría desencriptar la clave privada del certificado digital perdido.

Conseguir el mismo SID de máquina por azar sería una labor imposible. En versiones anteriores de Windows (hasta Windows XP y Windows Server 2003) existía una aplicación denominada NewSid de Sysinternals que permitía cambiar el SID de máquina. Lamentablemente esta aplicación no funciona en Windows 7, Windows Vista ni Windows Server 2008, pero podemos crear una instalación en Windows XP o 2003 y actualizar el sistema operativo.

A continuación se dan los pasos para recuperar un certificado digital no exportado o no exportado con clave privada, pero del que tenemos backup y contraseña del usuario que lo tenía instalado. Es recomendable utilizar una máquina virtual (por ejemplo con VMWare Player) para recrear la máquina:

1) Instalar Windows XP, Windows 2003 o una versión anterior que coincida con la que tuviera instalada la máquina. Es decir no podemos instalar Windows Vista, Windows 7 o Windows Server 2008 porque en ellos no funciona NewSid.

2) Ejecutar NewSid.exe.

Para saber el SID de máquina que teníamos consultaremos la copia de seguridad del perfil de usuario que tenía el certificado, y nos fijamos en una ruta que contiene dicho SID, por ejemplo “Application Data\Microsoft\Crypto\RSA\S-1-5-21-000000000-0000000000-000000000-1003”. En ese ejemplo el SID de máquina sería S-1-5-21-000000000-0000000000-000000000.

Preferiblemente, si conocíamos el nombre de máquina que tenía el equipo anteriormente, lo estableceremos de nuevo también con NewSid.

Se reiniciará el sistema. Podemos utilizar PsGetSid.exe para verificar que el SID de máquina ya es el que deseamos.

3) Crear usuarios en el sistema hasta llegar al que tiene la numeración indicad en el SID de usuario, teniendo en cuenta que el sistema operativo va asignando números correlativos.

Siguiendo con el ejemplo anterior iremos creando usuarios hasta llegar al que el sistema numere con la terminación 1003 como SID de usuario.

Para verificar el SID de los usuarios que creamos podemos ejecutar el comando “PsGetSid.exe nombredeusuario”.

4) Migrar el sistema operativo si el que teníamos previamente era Windows Vista, Windows 7 o Windows Server 2008 o versiones posteriores.

5) Valiéndose de “dir /a:s” para ver los ficheros ocultos y “robocopy.exe /E /S” para copiar los certificados y las claves privadas ocultas y protegidas, copiar las siguientes rutas en el perfil del usuario a partir de la copia de seguridad:

– AppData\Roaming\Microsoft\Crypto
– AppData\Roaming\Microsoft\SystemCertificates\My
– AppData\Roaming\Microsoft\SystemCertificates\Protect

6) Abrir Internet Explorer y exportar el certificado con la clave privada, asignando una contraseña robusta, y guardar el fichero exportado en lugar seguro para poder importarlo posteriormente.

2 comentarios en “Recuperación de un certificado digital no exportado

  1. CrackIT

    Gracias porque con las rutas que comentas pude copiar los certificados de un usuario de dominio tras retirar el ordenador del dominio y copiarlos al usuario local nuevo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.