Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles Ă  la une

ADCS / Erreur : Modèles de certificats non visibles

Problème rencontré

Après l’installation d’une autoritĂ© de certification d’entreprise, j’ai rencontrĂ© une erreur m’empĂŞchant de publier des modèles de certificats dont la version est supĂ©rieures Ă  1. Ce problème fut rencontrĂ© sur Windows 2012 R2 mais ne peut ĂŞtre gĂ©nĂ©ralisĂ© Ă  toute installation avec ce système d’exploitation. NĂ©anmoins, cet article permet de rĂ©soudre cet incident. Voici tout de mĂŞme le contexte dans lequel s’est produit ce problème. L’autoritĂ© de certification Ă©tait de type Subordinate  Enterprise et avait Ă©tĂ© installĂ© avec un fichier CAPolicy.inf contenant notamment la ligne "LoadDefaultTemplates=False". Ce dernier Ă©vite de publier les modèles par dĂ©faut.

Bien qu’il soit possible de crĂ©er des nouveaux modèles dans l’annuaire Active Directory, ces derniers n’Ă©taient pas visibles lors de leur publication via la console de gestion d’autoritĂ© de certification.

image

De plus, mĂŞme les modèles gĂ©nĂ©rĂ©s par dĂ©faut comme “Workstation Authentication” (modèle de version 2) ou encore “OCSP Response Signing” (modèle de version 3) n’apparaissent pas dans la liste des modèles publiables.

Contrairement Ă  un mauvais choix de type d’autoritĂ© de certification (standalone au lieu d’enterprise), il reste possible de publier des certificats mais seulement ceux dont le numĂ©ro de version est Ă©gale Ă  1.

Solution

Cette erreur est due Ă  un problème de configuration du registre. Pour rappel, les paramètres de configuration de l’autoritĂ© de configuration sont stockĂ©s dans “HKLM\System\CurrentControlSet\Services\Certsvc\Configuration\NOM_CA” oĂą “NOM_CA” reprĂ©sente le nom de l’autoritĂ© de certification.

Pour corriger l’erreur, il faut mettre Ă  jour le registre via la ligne de commande ci-dessous (celle-ci doit ĂŞtre exĂ©cutĂ©e en mode administrateur) :

Enfin, pour que la modification soit prise en compte, il est nĂ©cessaire de redĂ©marrer le service d’autoritĂ© de certification. Vous pouvez rĂ©aliser cette opĂ©ration graphiquement ou via les commandes suivantes :

NB : Une KB Microsoft (http://support.microsoft.com/kb/967332) dĂ©crit un problème similaire lors de la mise Ă  jour d’une autoritĂ© de certification 2003 ou 2008 en Ă©dition Standard vers une Ă©dition Enterprise de Windows 2008. En effet, seule cette dernière permet d’installer une autoritĂ© de certification de type Enterprise. Cependant, cette KB n’existe pas sous Windows 2012 et supĂ©rieure. Il n’y a d’ailleurs plus de contrainte sur l’Ă©dition du système d’exploitation installĂ©e (tous les types d’autoritĂ©s de certification pouvant ĂŞtre installĂ©es sur une Ă©dition standard comme datacenter depuis Windows Server 2012). NĂ©anmoins, l’erreur dĂ©crite dans cet article peut tout de mĂŞme ĂŞtre rencontrĂ©e.

Script – Certificats venant a expirer

 

Le script ci-dessous interroge le psdrive dédié au magasin de certificat local a la machine pour lister les certificats dont la date d’expiration approche (paramètre $expireInDays) et alerter si le nombre de certificats concernés depasse le seuil donné (Paramètre $NbThreshold).

Le parametre $blacklist permet d’exclure les certificats dont l’expiration est considéré OK (root & co, on Windows Server 2003, 2008 & 2012)

 

 

####################################################### # Script de supervision de la validité des certificats ####################################################### #Parametres: #$expireInDays – Nombre de jour avant expiration #$NbThreshold – Nombre de certificat au dela duquel alerter #N.B: Le script interroge le psdrive cert: local. param ( [int]$expireInDays=60, #Nombre de jour avant expiration [int]$NbThreshold = 0 #Nombre de certificat au dela duquel alerter ) $Scriptname = « check_ceritificate_expiration«  #Verification de l’existence d’une source ayant le nom du script dans l’eventlog Application pour loguer certains events Function NewEventSource { if(!(TestPath « HKLM:\SYSTEM\CurrentControlSet\services\eventlog\Application\$Scriptname« )) { NewEventLog LogName « Application«  Source $Scriptname } } # Exclusion des certificats tiers dont l’expiration est considéré OK (root & co, on Windows Server 2003, 2008 & 2012) $blacklist=@( « 109F1CAED645BB78B3EA2B94C0697C740733031C« , « 12519AE9CD777A560184F1FBD54215222E95E71F« , « 127633A94F39CBF6EDF7C7BF64C4B535E9706E9A« , « 18F7C1FCC3090203FD5BAA2F861A754976C8DD25« , « 23EF3384E21F70F034C467D4CBA6EB61429F174E« , « 245C97DF7514E7CF2DF8BE72AE957B9E04741E85« , « 24A40A1F573643A67F0A4B0749F6A22BF28ABB6B« , « 24BA6D6C8A5B5837A48DB5FAE919EA675C94D217« , « 2B84BFBB34EE2EF949FE1CBE30AA026416EB2216« , « 3A850044D8A195CD401A680C012CB0A3B5F8DC08« , « 4463C531D7CCC1006794612BB656D3BF8257846F« , « 47AFB915CDA26D82467B97FA42914468726138DD« , « 4BA7B9DDD68788E12FF852E1A024204BF286A8F6« , « 4D8547B7F864132A7F62D9B75B068521F10B68E3« , « 4DF13947493CFF69CDE554881C5F114E97C3D03B« , « 4EF2E6670AC9B5091FE06BE0E5483EAAD6BA32D9« , « 4F65566336DB6598581D584A596C87934D5F2AB4« , « 51C3247D60F356C7CA3BAF4C3F429DAC93EE7B74« , « 53DECDF3BC1BDE7C9D1CEDAE718468CA20CC43E7« , « 587B59FB52D8A683CBE1CA00E6393D7BB923BC92« , « 5E997CA5945AAB75FFD14804A974BF2AE1DFE7E1« , « 637162CC59A3A1E25956FA5FA8F60D2E1C52EAC6« , « 6690C02B922CBD3FF0D0A5994DBD336592887E3F« , « 67EB337B684CEB0EC2B0760AB488278CDD9597DD« , « 687EC17E0602E3CD3F7DFBD7E28D57A0199A3F44« , « 688B6EB807E8EDA5C7B17C4393D0795F0FAE155F« , « 68ED18B309CD5291C0D3357C1D1141BF883866B1« , « 720FC15DDC27D456D098FABF3CDD78D31EF5A8DA« , « 7613BF0BA261006CAC3ED2DDBEF343425357F18B« , « 7A74410FB0CD5C972A364B71BF031D88A6510E9E« , « 7AC5FFF8DCBC5583176877073BF751735E9BD358« , « 7B02312BACC59EC388FEAE12FD277F6A9FB4FAC1« , « 7CA04FD8064C1CAA32A37AA94375038E8DF8DDC0« , « 7D7F4414CCEF168ADF6BF40753B5BECD78375931« , « 7F88CD7223F3C813818C994614A89C99FA3B5247« , « 838E30F77FDD14AA385ED145009C0E2236494FAA« , « 8977E8569D2A633AF01D0394851681CE122683A6« , « 8B24CD8D8B58C6DA72ACE097C7B1E3CEA4DC3DC6« , « 9078C5A28F9A4325C2A7C73813CDFE13C20F934E« , « 90DEDE9E4C4E9F6FD88617579DD391BC65A68964« , « 96974CD6B663A7184526B1D648AD815CF51E801A« , « 9845A431D51959CAF225322B4A4FE9F223CE6D15« , « 9BACF3B664EAC5A17BED08437C72E4ACDA12F7E7« , « 9FC796E8F8524F863AE1496D381242105F1B78F5« , « A1505D9843C826DD67ED4EA5209804BDBB0DF502« , « A399F76F0CBF4C9DA55E4AC24E8960984B2905B6« , « A3E31E20B2E46A328520472D0CDE9523E7260C6D« , « A5EC73D48C34FCBEF1005AEB85843524BBFAB727« , « B19DD096DCD4E3E0FD676885505A672C438D4E9C« , « B533345D06F64516403C00DA03187D3BFEF59156« , « B6AF5BE5F878A00114C3D7FEF8C775C34CCD17B6« , « B72FFF92D2CE43DE0A8D4C548C503726A81E2B93« , « CFDEFE102FDA05BBE4C78D2E4423589005B2571D« , « D29F6C98BEFC6D986521543EE8BE56CEBC288CF3« , « DBAC3C7AA4254DA1AA5CAAD68468CB88EEDDEEA8« , « E38A2B7663B86796436D8DF5898D9FAA6835B238« , « EC0C3716EA9EDFADD35DFBD55608E60A05D3CBF3« , « EF2DACCBEABB682D32CE4ABD6CB90025236C07BC« , « F5A874F3987EB0A9961A564B669A9050F770308A« , « F88015D3F98479E1DA553D24FD42BA3F43886AEF« ) #Recuperation des certificats dont: #l’objet PSParentPath ne contiens pas « Disallowed » #N’est pas dans la blacklist #N’est pas déja expiré #Expire dans $expireInDays jours $allCerts = GetChildItem Path cert: Recurse | whereobject {$_.PSParentPath -notlike « *Disallowed«  ` -and ($blacklist -notcontains $_.Thumbprint) ` -and $_.Notafter -gt (getdate) -and $_.Notafter -lt (getdate).AddDays($expireInDays) } | SelectObject Property PSPath,Issuer,Subject,NotAfter if (@($allCerts | MeasureObject | SelectObject count ExpandProperty count) -gt $NbThreshold) { writehost ForegroundColor Yellow « WARNING«  writehost ForegroundColor Yellow « Nombre de certificat venant a expirer dans $expireInDays jours : « $allCerts.count«  `n«  #Formatage pour affichage et insertion dans l’eventlog [string]$resultat = $allCerts | foreach { $_.PsPath ; $_.Subject ; $_.Issuer ; $_.NotAfter ; « `n«  ; « `n« } $resultat NewEventSource $count = $allCerts.count [string]$resultat = $allCerts | foreach { $_.PsPath ; $_.Subject ; $_.Issuer ; $_.NotAfter ; « `n«  ; « `n« } WriteEventLog LogName Application Source $Scriptname EntryType Warning EventId 1001 Message « WARNING – Nombre de certificat venant a expirer dans $expireInDays jours : $count `n`n ; $resultat «  } Else { writehost ForegroundColor Green « OK«  writehost « Nombre de certificat venant a expirer dans $expireInDays jours inferieur ou egal a $NbThreshold«  NewEventSource WriteEventLog LogName Application Source $Scriptname EntryType Information EventId 1000 Message « OK – Nombre de certificat venant a expirer dans $expireInDays jours inferieur ou egal a $NbThreshold«  }

Azure – rĂ©cupĂ©rer l’accès Ă  une VM quand la carte rĂ©seau a Ă©tĂ© dĂ©sactivĂ©e

 

Si vous utilisez Azure pour déployer des VM, vous n’êtes pas sans savoir qu’il n’existe aucun moyen de se connecter à une console « directe » (en mode KVM/Ilo/Idrac).

Les seules possibilités d’accès sont celles basées sur un protocole réseau, par exemple Remote Desktop sous Windows.

Mais alors, que se passe-t-il si vous avez désactivé la carte réseau ? Il n’existe à première vue plus aucun moyen de prendre la main sur votre VM…

Un simple redémarrage ne suffit évidemment pas.

Mais une astuce simple permet de se sortir de ce mauvais pas :

Ouvrez l’ancien portail azure ( https://manage.windowsazure.com ) (au moment de la rédaction de ce billet, la manipulation ne fonctionne pas avec le nouveau).

Ouvrez les propriétés de votre VM et modifiez sa taille (size) en choisissant un autre Tier que celle où elle se trouve déjà (Standard vers Basic, par exemple) :

clip_image002

Le redimensionnement prend quelques secondes et est suivi d’un redémarrage de la VM :

clip_image004

clip_image006

clip_image008

Patientez encore quelques minutes, le temps que la VM termine de démarrer et qu’elle installe les pilotes de la « nouvelle » carte réseau, puis qu’elle monte les services réseau etc.

Vous devriez maintenant pouvoir vous connecter via le Bureau Ă  distance Ă  votre VM, avec son ancienne IP !

On peut également retrouver dans le journal d’événements une trace de l’installation de cette nouvelle carte réseau :

clip_image010