Migrar cifrado entidad certificadora

2 octubre 2018
Josep Ma Solanes 3

Esta entrada trata de migrar cifrado a Microsoft Key Storage Provider (KSP) y algoritmo de firma SHA-2, de una entidad certificadora Microsoft Windows Server.

En el caso que se haya heredado una entidad certificadora antigua es muy probable que esté utilizando un sistema de cifrado que a fecha de hoy ya no se considere seguro. Es el caso del Microsoft Strong Cryptographic Provider (CSP) y el algoritmo de firma SHA-1, que se configuraba por defecto en sistemas operativos más antiguos.

A vistas de algunos usuarios, por el solo hecho que se cierre el candado, a pesar de ser inseguro, se daba por bueno.

Sin embargo, los tiempos han cambiado los navegadores modernos se han puesto las pilas con los temas de seguridad. Ya no es suficiente que una web tenga un certificado para poder habilitar el candado en el entorno HTTPS, también se deben cumplir unos requisitos mínimos de seguridad y uno de ellos es no utilizar sistemas obsoletos.

En la foto de ejemplo se utiliza un certificado de una entidad certificadora Microsoft Windows Server 2012 R2 emitido con:

  • Proveedor de cifrado Microsoft Strong Cryptographic Provider, que se considera obsoleto.
  • Firma del certificado con SHA-1.
  • Sin el nombre alternativo en el certificado.
  • Un error del nombre común del certificado.
  • Advertencia de configuración de la conexión obsoleta por utilitzar RSA, AES_128_CBC con HMAC_SHA1.

En definitiva, un certificado con problemas por todas partes. ¿Cómo lo solucionamos esto?

 

Actualización sistemas de cifrado entidad certificadora

Desde el administrador de la Entidad Certificadora de Microsoft Windows Server, botón derecho sobre el nombre de la entidad certificadora y hacer clic en Propiedades.

En el ejemplo, en la configuración de cifrado de la entidad, se indica como proveedor Microsoft Strong Cryptographic Provider y algoritmo de firma SHA-1. Estos valores son los que se deben cambiar.

Empezamos haciendo una copia de seguridad de la entidad certificadoracertificado raíz tal y como están ahora en la carpeta C:\Backup-CA. Abrir la consola de PowerShell con privilegios de administrador y ejecutar los siguientes comandos:

mkdir c:\Backup-CA
Backup-CARoleService –path C:\Backup-CA -Password (Read-Host -Prompt "Introduce la contraseña para la clave privada" -AsSecureString)

A la pregunta de la contraseña, introducir una contraseña para la clave privada del certificado de la entidad.

Dentro de la carpeta Backup-CA se ha creado el archivo del certificado y la carpeta Database que contiene la base de datos de la entidad.

Para asegurar el tiro y ser previsores, también recomiendo hacer una copia de seguridad de la configuración de la Entidad Certificadora ubicada en el registro del equipo.

Desde la consola de PowerShell con privilegios de administrador ejecutar el siguiente comando:

reg export HKLM\SYSTEM\CurrentControlSet\services\Certsvc C:\Backup-CA\Backup_Registre.reg

O bien, desde el entorno gráfico, abrir el editor de registro con el comando:

regedit

Localizar la clave registro

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc

Botón derecho sobre este nombre y hacer clic en la opción exportar:

Indicar la ruta de la copia de seguridad de la entidad certificadora y un nombre descriptivo: Backup_Registre. Hacer clic en el botón Guardar.

Cerrar el editor del registro y procedemos a realizar las tareas de mantenimiento propiamente en la entidad certificadora para migrar cifrado. Desde la consola de PowerShell paramos el servicio:

Stop-Service certsvc

Pasar a un archivo de texto los datos del certificado actual de la entidad certificadora para obtener las firmas a modo de consulta. Sustituir NOMBRE ENTIDAD CERTIFICADORA, por el nombre correspondiente a vuestra entidad:

certutil -store my "NOM ENTITAT CERTIFICADORA" > datos.txt

Comprobar que el contenido del archivo se visualiza algo parecido a la siguiente foto. Necesitamos localizar el valor de la línea Cert Hash (sha1).

Borrar el actual certificado de la entidad certificadora, tranquilo, tienes una copia de seguridad por si algo va mal. Desde la consola de PowerShell con privilegios de administrador, accedemos al almacén de certificados:

cd cert:\localmachine\my
dir

Localizar el Thumbprint correspondiente al certificado de la entidad certificadora, el mismo que corresponde a la línea Cert Hash (sha1) anterior.

Borrar el certificado con el siguiente comando, donde THUMBPRINT corresponde al hash sin espacios:

del -deletekey THUMBPRINT

Comprobar que ya no existe el certificado de la entidad certificadora:

dir

Crear un nuevo certificado a partir del certificado de la copia de seguridad, pero modificando el proveedor de cifrado a Microsoft Software Key Storage Provider. Ejecutar:

certutil -csp "Microsoft Software Key Storage Provider" -importpfx "c:\Backup-CA\JMSolanes CA.p12"

Introducir la contraseña que se ha indicado en la copia de seguridad para poder importar el certificado y la clave privada del mismo.

Comprobar que se ha importado correctamente el nuevo certificado al almacén haciendo un listado del mismo:

dir cert:\localmachine\my

Si se comprueba el valor del certificado importado enviando los datos del mismo a un archivo, se puede comprobar como el proveedor de cifrado ha cambiado.

Exportar el certificado y su clave privada en formato pfx, para poder importar de nuevo al almacén. Se nos pide para la contraseña de la clave privada para el certificado exportado, introducir la que se considere oportuna:

certutil -exportpfx my "JMSolanes CA" c:\Backup-CA\jmsolanes_ca.pfx"

Recuperar la clave privada en la entidad certificadora:

certutil -restorekey "c:\Backup-CA\jmsolanes_ca.pfx"

Comprobar que algoritmo de firma está utilizando el CSP:

certutil -v -getreg ca\csp\HashAlgorithm

Crear un nuevo archivo con extensión .reg para modificar el algoritmo de firma, con el bloc de notas mismo y con el nombre que queráis, yo he utilizado regcsp.reg. Copiar el siguiente contenido, sustituyendo <Nombre de la CA> por el nombre de la CA que tengáis (sin los símbolos <>) y el CNGHashAlgorithm por el obtenido en el comando anterior. 

Aseguráos que la primea línea empieza por Windows Registry Editor… Y que después hay una línea en blanco.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<Nombre de la CA>\CSP]
"ProviderType"=dword:00000000
"Provider"="Microsoft Software Key Storage Provider"
"CNGPublicKeyAlgorithm"="RSA"
"CNGHashAlgorithm"="SHA1"

Ejecutar el archivo para fusionar los valors en el registro. A la pregunta de si estáis seguros, contestar que si.

Comprobar el algoritmo de cifrado que se está utilizando:

certutil -v -getreg ca\encryptioncsp\EncryptionAlgorithm

Crear un nuevo archivo para modificar la configuración de cifrado CSP. Volver a sustituir el valor de <Nombre de la CA> por el nombre de la CA que tengáis (sin los símbolos de <>) y que el algoritmo de cifrado (CNGEncryptionAlgorithm) es el que corresponde.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<Nombre de la CA>\EncryptionCSP]
"ProviderType"=dword:00000000
"Provider"="Microsoft Software Key Storage Provider"
"CNGPublicKeyAlgorithm"="RSA"
"CNGEncryptionAlgorithm"="3DES"
"MachineKeyset"=dword:00000001
"SymmetricKeySize"=dword:000000a8

Ejecutar el archivo para fusionar los valores al registro. A la pregunta de si estáis seguros, contestar que si.

Cambiar el algoritmo de firma a SHA-2, actualmente con SHA256 hay suficiente, pero tal como se dice «ande o no ande, el burro grande», seleccionamos SHA512.

certutil -setreg ca\csp\CNGHashAlgorithm SHA512

Iniciar la entidad certificadora para aplicar los cambios:

Start-Service certsvc

Abriendo de nuevo la consola de la entidad certificadora y accediendo a las propiedades de la misma, se observa que el proveedor de cifrado ya ha pasado a ser Microsoft Software Key Storage Provider y el algoritmo de firma ha pasado a SHA512.

Pero eso no quiere decir que se haya actualizado el certificado de la entidad certificadora ni ningún otro certificado que se haya emitido hasta el momento. Es a partir de ahora que se generarán los nuevos certificados que se cambia el sistema de cifrado y algoritmo de firma.

Si se comprueba el certificado de la entidad certificadora, continúa disponiendo del algoritmo de firma SHA1.

Generar un nuevo certificado con el cifrado KSP y el algoritmo de firma SHA512

Desde la consola de administración de la entidad certificadora, botón derecho sobre el nombre de la entidad, seleccionar todas las tareas y hacer clic en la opción  Renovar certificado de la CA.

Se advierte que durante el proceso se debe parar la entidad certificadora. Hacer clic en el botón Si.

¿Renovar con la misma clave? NO! es lo qué queremos cambiar. Seleccionar No y hacer clic en el botón OK.

Si se visualizan los detalles del nuevo certificado, ha cambiado el algoritmo de firma a SHA512RSA.

Recordad de redistribuir el nuevo certificado como entidad raíz de confianza antes de generar los nuevos certificados y asignarlos a los diferentes servicios.

¿Te ha gustado el artículo? Lo puedes compartir en las redes sociales. También puedes dejar tu opinión, comentario o sugerencia. ¡Gracias!

Similar Posts by The Author:

 

3 comentaris per a
“Migrar cifrado entidad certificadora”

  1. Hola, Josep!

    Felicidades por el post, me parece muy interesante y útil.

    Tengo la siguiente duda: en la renovación del certificado raíz, comentas que no deseas renovarlo con la misma clave. Sin embargo, en la captura, el cuadro de diálogo pregunta si se desea generar una nueva clave privada… ¿no se debería entonces seleccionar «sí»?

    Saludos

     
  2. Hola Requiero de su ayuda por error coloque SI en ¿Renovar con la misma clave? , luego lo hice de nuevo y coloque NO, pero ahora tengo 3 certificados CA . Tengo problemas al emitir cetificados da error microsoft active directory certificate service Certificado request denied y en el CA tengo muchos Failed Request. Me pueden ayudar?

     
Els comentaris estan tancats.