Suppression (en masse) d'entrées dans la base de données des autorités de certification (certificats, exigences, listes de révocation)

Il arrive parfois que la base de données de l'autorité de certification devienne extrêmement volumineuse. Il se peut qu'un grand nombre de demandes de certificats soient arrivées et aient été refusées sans que l'on s'en aperçoive, ou que la base de données contienne de nombreux certificats qui ont été émis en double. Avant que la base de données de l'autorité de certification compacté Pour que la base de données puisse être utilisée de manière optimale, ces entrées doivent d'abord être supprimées afin de libérer de l'espace dans la base de données.

Connaissez-vous TameMyCerts? TameMyCerts est un add-on pour l'autorité de certification Microsoft (Active Directory Certificate Services). Il étend la fonction de l'autorité de certification et permet de Application de la réglementationIl s'agit d'un logiciel de gestion des certificats qui permet d'automatiser l'émission de certificats en toute sécurité. TameMyCerts est unique dans l'écosystème Microsoft, a déjà fait ses preuves dans d'innombrables entreprises du monde entier et est disponible sous une licence libre. Il peut téléchargé via GitHub et être utilisé gratuitement. Une maintenance professionnelle est également proposée.

Une suppression des inscriptions est possible avec le -deleterow Interrupteur du programme certutil possible.

certutil [Options] -deleteRow ROWID | Date [Request | CERT | Ext | Attrib | CRL

Voici quelques exemples d'utilisation de certutil avec le commutateur -deleterow.

Il est recommandé, avant de supprimer des inscriptions, de mettre l'autorité de certification en mode d'alerteIl est important que les autorités de certification fassent une copie de sauvegarde de la base de données de l'autorité de certification, afin qu'elles ne puissent pas demander de nouveaux certificats.

Suppression de lignes individuelles

Des lignes individuelles dans la base de données des autorités de certification - identifiées par leur numéro de ligne (Row ID) - peuvent être supprimées à l'aide de la commande suivante :

certutil -deleterow {RowId} 

Suppression des demandes qui ont échoué

Il est possible de supprimer des demandes qui ont échoué en utilisant la syntaxe suivante :

certutil -deleterow {Datum} Request 

Dans le cas des exigences, la date décrit le moment où l'exigence a été envoyée à l'autorité de certification.

La date doit être indiquée au format local (paramètre régional de l'ordinateur sur lequel la commande est exécutée).

Pour déterminer le format de date correct, la commande PowerShell suivante peut être utilisée :

$((Get-Date).ToString($(Get-culture).DateTimeFormat.ShortDatePattern)) 

Il est également possible de calculer avec celle-ci. Voici un exemple pour déterminer la date locale il y a 180 jours :

$((Get-Date).AddDays(-180).ToString($(Get-culture).DateTimeFormat.ShortDatePattern)) 

Pour les très grands ensembles de données, la requête dans la base de données se heurtera à un timeout au bout d'un moment. Certutil renverra alors le code d'erreur -939523027. Ceci peut être contourné en mettant la commande en boucle dans un fichier batch.

@echo off
:Top
certutil -deleterow {Datum} Request
If %ERRORLEVEL% EQU -939523027 goto Top 

Suppression de tous les certificats expirés à partir d'une certaine date

ImportantCette commande supprime tous les certificats expirés, ce qui n'est pas souhaitable dans la plupart des cas. La manière de formuler des critères plus précis est expliquée dans la suite de l'article.

Une suppression de certificats expirés est possible avec la syntaxe suivante :

certutil -deleterow {Datum} Cert

Ici, la date décrit la date d'expiration (NotAfter) du certificat.

Il convient de noter que la date doit se situer dans le passé. Il n'est pas possible de supprimer de cette manière des certificats encore valables.

Ici aussi, il faut tenir compte du fait qu'en cas de très grands ensembles de données, l'interrogation de la base de données se heurtera à un timeout au bout d'un certain temps. Voici un exemple adapté en conséquence pour les certificats expirés.

@echo off
:Top
certutil -deleterow {Datum} Cert
If %ERRORLEVEL% EQU -939523027 goto Top 

Suppression de certaines listes de blocage

L'identification et la suppression de certaines listes de blocage sont décrites dans l'article "Consultation du tableau des listes de blocage de la base de données des autorités de certification" décrit.

Suppression de certificats selon certains critères

Les exemples précédents ne sont malheureusement pas adaptés à tous les cas en ce qui concerne les critères de recherche. De plus, ils ne fonctionnent qu'avec des moyens auxiliaires pour les grandes bases de données, car il y a une valeur de timeout après la fin des requêtes dans la base de données.

Pour éviter ces deux problèmes, il est possible de formuler d'abord une requête précise dans la base de données et de la mettre en mémoire tampon. Un traitement direct dans un pipeline serait certes possible, mais serait également interrompu après un certain temps.

Voici un exemple de commande permettant d'identifier les certificats expirés à une date donnée à partir d'un modèle de certificat donné et d'enregistrer les ID de demande dans un fichier CSV.

certutil ^
-view ^
-restrict "CertificateTemplate={OID-der-Vorlage},NotAfter={Datum}" ^
-out "RequestId" ^
csv > {Pfad-zur-Datei}.csv

Le modèle de certificat est identifié par son identifiant d'objet, qui peut par exemple être déterminé à partir de l'extension Certificate Template Information d'un des certificats.

Le fichier généré devrait maintenant contenir les entrées correspondantes. Il est important de déterminer le nom exact de l'en-tête, qui varie en fonction de la langue du système d'exploitation.

L'étape suivante consiste à lire le fichier CSV via PowerShell et à demander la suppression de chaque entrée.

Import-Csv -Path {Pfad-zur-Datei}.csv | ForEach-Object -Process {
certutil -deleterow $_."Issued Request ID"
}

Cette méthode est potentiellement plus lente que les précédentes, mais les requêtes peuvent être formulées de manière plus précise et il n'y a pas de risque que la session de la base de données se retrouve en situation de time-out, puisque chaque suppression de ligne constitue une opération de base de données à part entière.

Avant de déclencher la suppression, il convient de bien vérifier les résultats afin de ne pas supprimer les mauvais certificats.

Compacter la base de données CA

La base de données de l'autorité de certification peut maintenant être compactée. Les étapes exactes sont décrites dans l'article "Compactage (défragmentation) de la base de données de l'autorité de certification" décrit.

Trivia

Si la surveillance des événements d'audit est activée, l'autorité de certification enregistrera une suppression dans le journal des événements de sécurité (Événement n° 4896).

Liens complémentaires :

Sources externes

Les commentaires sont fermés.

fr_FRFrançais