En el momento de importar un certificado digital, ya sea para el usuario actual (certmgmt.msc) como para el equipo (certlm.msc), tenemos la opción de establecer dicho certificado como exportable. Esto nos permite exportar el certificado (clave pública) con la clave privada en un mismo fichero en formato pfx.

Más información sobre algunos tipos de formatos de certificados.

Figura 1: Checkbox “Marcar clave como exportable” al importar un certificado digital.

Figura 1: Checkbox “Marcar clave como exportable” al importar un certificado digital.

Si no marcamos el check “Marcar esta clave como exportable” cuando se importa un certificado. En el momento de exportarlo del almacén de certificados del usuario actual: Botón derecho > todas las tareas > exportar…

Figura 2: Exportar certificado del administrador de certificados.

Figura 2: Exportar certificado del administrador de certificados.

Vemos desmarcada la opción "*Exportar la clave privada*".

Figura 3: Intento de exportación de clave privada, opción deshabilitada, certificado no exportable.

Figura 3: Intento de exportación de clave privada, opción deshabilitada, certificado no exportable.

Para poder exportar un certificado ya instalado en el almacén de certificados del usuario actual, el cual no podemos exportar junto con la clave privada. Podemos usar dos opciones.

Usando Jailbreak Link to heading

Jailbreak nos permitirá abrir una consola de Microsoft (MSC) del almacén de certificados de Windows y poder realizar la exportación de la clave privada estableciendo una nueva password.

Una vez descargado Jailbreak abrimos una consola cmd con el mismo usuario donde tenemos instalado el certificado y nos situamos en la raíz, ejecutamos el proceso por lotes “jbcert32.bat”. Este nos lanzará una ventana del almacén de certificados de usuario (certmgr.msc).

Figura 4: Ejecución de jailbreak para exportar certificados no exportables.

Figura 4: Ejecución de jailbreak para exportar certificados no exportables.

Si quisiéramos ejecutar el almacén local de certificados a nivel de máquina certlm.msc, no el almacén de usuarios como el caso anterior. Ejecutaríamos lo siguiente.

64 bits
jailbreak64.exe %WINDIR%\system32\mmc.exe %WINDIR%\system32\certlm.msc -64
32 bits
jailbreak32.exe %WINDIR%\system32\mmc.exe %WINDIR%\system32\certlm.msc -32

Ahora vemos cómo al intentar exportar el certificado nos permite exportar la clave privada.

Figura 5: Opción habilitada para exportar clave privada.

Figura 5: Opción habilitada para exportar clave privada.

Elegimos un formato .pfx (este almacenará tanto la clave pública como la clave privada), podemos también marcar la opción de “Exportar todas las propiedades extendidas”.

Figura 6: Opciones disponibles para exportar el certificado en formato .pfx.

Figura 6: Opciones disponibles para exportar el certificado en formato .pfx.

Podemos establecer una nueva contraseña para la clave privada, este sería el modo de restablecer la clave privada. Al finalizar el asistente tendremos exportado un certificado .pfx que contiene ambas claves y volver a importarlo en otro usuario o equipo.

Figura 7: Establecer una nueva contraseña para la clave privada.

Figura 7: Establecer una nueva contraseña para la clave privada.

Usando Mimikatz Link to heading

Otra opción para poder exportar certificados no exportables de forma sencilla es con la herramienta Mimikatz (ya comentada en el blog).

Una vez descargado Mimikatz abrimos una consola cmd y nos ubicamos en el raíz ejecutando “mimikatz.exe” (dependiendo de la arquitectura del sistema operativo que tengamos win32 o x64).

crypto::capi
crypto::certificates /export

Esto buscará los certificados del almacén del usuario actual y los exportará en codificación .der y formato .pfx. La contraseña por defecto que establece Mimikatz es mimikatz (sin comillas).

Podremos cambiar la password importando el certificado y volviendo a exportarlo con la clave privada estableciendo una nueva password (como se muestra en la figura 8).

Figura 8: Mimikatz - Exportar certificados no exportables.

Figura 8: Mimikatz - Exportar certificados no exportables.

Saludos!