locked
Suppression certificats révoqués RRS feed

  • Question

  • Bonjour,

    Pour commencer, je vais vous expliquer le contexte. Nous avons un serveur 2008 R2 disposant du service "Services de certificats Active Directory" nous permettant d'avoir une autorité de certification interne.

    Cette autorité signe les certificats de nos différents serveurs. Afin d'être prévenu de l'expiration des certificats j'ai un petit programme Powershell qui permet de lire la base de donnée de la PKI de mon entreprise, et ainsi récupérer tous les certificats expirant dans les 30 jours. 

    Cependant, et voici mon problème, le script Powershell me récupère également les certificats révoqués par mon autorité (dont certains sont des certificats de tests). J'ai essayé de chercher comment supprimer en mode graphique (impossible pour moi) puis en mode powershell avec "Certutil" mais je n'arrive vraiment pas à trouver de solution pour vider la liste des "Certificats révoqués". Je pensais à "certutil -deleterow date Cert" mais certains de mes certificats ont des temps plus long que mes certificats révoqués. 

    La solution est peut-être dans la requête powershell, donc voici mon petit programme :

    #On efface l'écran
    clear
    #On vide le dossier de réception des fichiers TXT
    Remove-Item "C:\Certificats\*"
    
    
    ###############
    # Variables
    ###############
    #On déclare les variables de date ainsi que la condition de recherche des certificats
    $date=Get-Date #Date du jour
    $datefin=($date).AddMonths(1) #Date du jour + 1 mois
    $a=$date.ToString("dd/MM/yyyy HH:mm:ss") #Passage au format FR
    $b=$datefin.ToString("dd/MM/yyyy HH:mm:ss") #Passage au format FR
    $restrict="NotAfter<=$b,NotAfter>=$a" #Condition de recherche 
    $path="C:\Certificats" #Chemin de sauvegarde
    
    
    ################################################################
    # Récupération des certificats expirant dans moins d'un mois
    ################################################################
    #Récupération des certificats suivant la condition 
    $resultat=(certutil –view –restrict $restrict –out "CommonName,NotBefore,NotAfter,CertificateTemplate") #Commande de récupération
    $compteur=$resultat.Count #Compteur du nombres de lignes récupérés pour la boucle suivante
    
    #Si on trouve un certificat dont le modèle comporte le mot "Serveur", on affiche les 3 lignes le concernant 
    #dans un fichier TXT à son nom
    for($i=0;$i -le $compteur;$i++){
        if ($resultat[$i] -Like "*Serveur*"){
            $type,$name=$resultat[($i-3)] -Split ": " #On récupère la ligne du nom puis seulement le nom
            $name=$name.Replace('"','') #On enlève les guillemets autour du nom
            "Dernière exécution du script : $a" > $path\$name.txt
            "`r" >> $path\$name.txt
            "`r" >> $path\$name.txt
            "----------------------------------"  >> $path\$name.txt
            "`r" >> $path\$name.txt
            "`r" >> $path\$name.txt
            "Certificat arrivant à expiration dans moins d'un mois :" >> $path\$name.txt
            "`r" >> $path\$name.txt
            #On écrit ensuite le nom + la date + le modele du certificat arrivant à expiration
            $resultat[($i-3)] >> $path\$name.txt
            $resultat[($i-2)] >> $path\$name.txt
            $resultat[($i-1)] >> $path\$name.txt
            $resultat[($i)] >> $path\$name.txt
        }
    }

    Si vous avez des idées, je suis preneur merci beaucoup :) 

    Quentin.

    mardi 14 novembre 2017 11:48

Réponses

  • Bonjour,

    Au final j'ai réussi à résoudre mon problème en modifiant mon script. L'application d'un nouvel élément pour le filtre de ma recherche de certificats a permis de résoudre cela.

    Pour ceux que ça intéresse, j'ai rajouté l'option "Disposition=20" dans la condition de recherche :

    $restrict="NotAfter<=$b,NotAfter>=$a,Disposition=20" #Condition de recherche 

    Cette condition permet de récupérer seulement les certificats "délivrés" qui ne sont pas révoqués.

    Pour plus d'infos, je me suis appuyé sur ce lien :

    https://blogs.technet.microsoft.com/pki/2008/10/03/disposition-values-for-certutil-view-restrict-and-some-creative-samples/

    Cordialement,

    Quentin.

    • Marqué comme réponse DounFM jeudi 16 novembre 2017 15:24
    jeudi 16 novembre 2017 15:24
  • Bonjour DounFM,

    Je vous remercie d'avoir partagé cette solution avec la communauté du forum.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 17 novembre 2017 15:04

Toutes les réponses

  • Bonjour Quentin,

    Comme c'est marqué dans l'article suivant :"Étant donné que les certificats émis ne sont pas stockés dans la base de données de l’Autorité de certification, la révocation des certificats n’est pas possible. Toutefois, la maintenance d’une liste de révocation des certificats pour un volume élevé de certificats à court terme n’est souvent pas pratique ou bénéfique.
    Par conséquent, certaines organisations peuvent choisir d’utiliser cette fonctionnalité et d’accepter les limites de la révocation." (source : https://technet.microsoft.com/fr-fr/library/dd448537(v=ws.10).aspx).
    En cas de questions complémentaires, concernant votre script Powershell, je vous invite à poster votre demande dans le forum approprié.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mercredi 15 novembre 2017 10:32
  • Bonjour,

    Au final j'ai réussi à résoudre mon problème en modifiant mon script. L'application d'un nouvel élément pour le filtre de ma recherche de certificats a permis de résoudre cela.

    Pour ceux que ça intéresse, j'ai rajouté l'option "Disposition=20" dans la condition de recherche :

    $restrict="NotAfter<=$b,NotAfter>=$a,Disposition=20" #Condition de recherche 

    Cette condition permet de récupérer seulement les certificats "délivrés" qui ne sont pas révoqués.

    Pour plus d'infos, je me suis appuyé sur ce lien :

    https://blogs.technet.microsoft.com/pki/2008/10/03/disposition-values-for-certutil-view-restrict-and-some-creative-samples/

    Cordialement,

    Quentin.

    • Marqué comme réponse DounFM jeudi 16 novembre 2017 15:24
    jeudi 16 novembre 2017 15:24
  • Bonjour DounFM,

    Je vous remercie d'avoir partagé cette solution avec la communauté du forum.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 17 novembre 2017 15:04