Restauración de una Entidad Certificadora desde un Backup con CertUtil.

Buenos dias,

Despues de unas mini-vacaciones en Calp, siguiendo la recomendación de mi compañero Jota, una semana con los peques se hace corta y muy dura, jejeje, pero sirve para desconectar. Volvemos a la carga con fuerzas renovadas y muchas ganas de seguir compartiendo las incidencias diarias.

Durante este periodo de tiempo nos ocurrió una incidencia con una Entidad Certificadora (CA). Teníamos que volver a un estado anterior de la misma y de esta manera recuperar mas de 50 certificados revocados por error. No se si sabreis que cuando revocas certificados en una CA, puedes especificar un motivo y una fecha. Tienes las siguientes opciones:

RestoreCA00000

La única opción que te permite una marcha a trás de una revocación de certificado es “Certificate Hold”:

RestoreCA00000c

Y el proceso de recuperación de un certificado revocado por error, a través de la consola es el siguiente, nos vamos a la carpeta de Certificados Revocados, encontramos aquel certificado que por error revocamos, botón derecho del ratón, todas las tareas y la última opción es la nuestra:

RestoreCA00000b

Cada día me queda mas claro que tener un plan de contingencia y recuperación frente a fallos de todos y cada uno de los servicios que tenemos es esencial y primordial. Por tal motivo os dejo este post.

Copia de Seguridad de la CA.

Para empezar os recuerdo que tenemos que tener definido una backup de la CA para poder hacer una restauración, ya sea ejecutando un Script de PowerShell, batch o desde la Consola de administración. En mi caso tengo definido el siguiente backup el cual ya hablamos en un post de hace tiempo (Script para realizar Backup de una CA):

Echo Backup Certification Authority, Certificates, Templates and CSP
CD/
cd Backup
Echo Y| del C:\Backup\BackupCA\DataBase
Echo Y| rd /S C:\Backup\BackupCA\DataBase\DataBase
Echo Y| del C:\Backup\BackupCA

Echo Backing up the Certification Authority and Certificates
certutil -backup -p C:\Backup\BaciupCA\DataBase

Echo Backing up the registry keys
reg export HKLM\System\CurrentControlSet\Services\CertSvc\Configuration C:\Backup\BACKUPCA\regkey.reg
Certutil –getreg CA\CSP > C:\Backup\BackupCA\CSP.txt

Echo Documenting all certificate templates published at the CA
Certutil –catemplates > C:\Backup\BackupCA\CATemplates.txt

move \\\backup\BackupCA \\<Servidor>\backup\”\%date:/=_%”
xcopy C:\Backup\BackupCA\*.* \\<Servidor>\backup\BackupCA\ /S /y

Este script realiza una copia de seguridad de toda la CA, de los Certificados, de la configuración de la misma, de las plantillas, de los Provedor de Servicio de Cifrado (CSP), etc. En las dos últimas lineas lo que hacemos es copiarnos dicho backup en una carpeta que tenga por nombre la fecha del día en que se ejecuta este script y se mueva a una ubicación externa diariamente el último backup.

Os dejo un par de capturas, la primera con el contenido de dicho Backup:

RestoreCA00002

Y la segunda con la ubicación en red con todos los backups de todos los dias por si tenemos que realizar una restauración selectiva:

RestoreCA00001

Restauración de la CA.

La restauración también podemos hacerla desde la Consola de Administración, como vimos en un Post anterior sobre la importación de una CA (aqui),  o con la herramienta CertUtil.exe, que es nuestro caso.

No se si sabreis pero con CertUtil podemos hacer backup/restore de los siguientes partes de nuestra CA, de toda la CA, de la base de datos, de la Clave Privada:

RestoreCA00010

Pues nada, nos ponemos al tajo. Ejecutamos el siguiente comando:

CertUtil.exe -restore -f -p Backup>

Si os fijais, en la primera ejecución del comando me da un error de que no puede restaurar el backup porque otro proceso está siendo utilizado por otro proceso, vamos que tengo que para la Entidad Certificadora para realizar una restauración, obviamente.

En la segunda ejecución aparece el error de que el directorio no está vacio!!!. O sea, que tenemos que poner el parámetro -f para que sobreescriba los ficheros actuales. Y, por fin, a la tercera da la vencida:

RestoreCA00011

Pues ya tendríamos restaurada nuestra Entidad Certificadora. Sencillo, ¿verdad? Pues aun nos queda un pequeño detalle.

CRL’s y Deltas.

Como sabreis cuando configuramos una CA, definimos uno o varios métodos de publicación de los certificados que han sido revocados (CRLs, OCSP, etc). Lo habitual es utilizar las bondades que nos ofrece nuestra CA por defecto y utilizar la publicación de una “Lista de Revocación de Certificados” o CRL.

RestoreCA00015

Nuevamente, por defecto viene configurada con la publicación de una CRL cada semana y de las Delta CRL cada día. La CRL contiene todos los certificados revocados y los Delta CRL solo aquellos certificados revocados desde la última creación de la CRL completa, vamos para solucionar el problema del excesivo tamaño del fichero CRL y el ancho de banda necesario para su descarga.

RestoreCA00016

En el proceso de chequeo del estatus de revocación de un certificado, el sistema tratará de recuperar la CRL y la Delta CRL de cada ruta definida en los Puntos de Distribución de la CRL (CDP). Normalmente definiremos, al menos, una ruta LDAP y otra HTTP, por lo tanto tratará de recuperar la CRL y Delta CRL de ambas rutas y, en nuestro caso, despues de una restauración, éstas son distintas, con el consiguiente error de “Certificado Revocado”

Como podeis ver en la captura de la configuración de mis puntos de distribución de la CRL tengo cinco distintos puntos para que se pueda acceder, al menos, a uno de ellos.

¿Solución? Pues tenemos dos opciones:

  1. Copiamos manualmente desde una ubicación a la otra la CRL.
  2. Creamos un archivo por lotes para copiar automáticamente la CRL

Xcopy c:\windows\system32\certsrv\CertEnroll\*.crl  c:\Inetpub\…

Espero que os sea muy util.

Buena semana a todos.

También te podría gustar...