Installer l'autorité de certification sur Windows server partie 2

Installation du subCA


Contrairement au root CA, le Sub Ca doit être un ordinateur joint au domaine.
Il aura ainsi accès à l'AD et il pourra être joint facilement par les ordinateurs du domaine etc ...

Il lui faut également un répertoire CertEnroll à la racine du disque D

Tout comme pour le serveur du root CA, on va ajouter un rôle

Next next

Cocher Active Directory Services tout pareil que le Root CA etc

Cliquer sur Next

Et sur Install

Ensuite en haut à droite lancer la configuration du Sub CA

Comme pour le Root CA, préciser le compte pour le Sub CA puis Next

Cocher Certification Authority puis Next pour Sub CA

Comme ce serveur est intégré au domaine, choisir Enterprise CA

On crée bien ici un Subordinate CA

Choisir le niveau de cryptage de la clé du Sub CA

Definir le nom pour la Sub CA et cliquer sur Next

Noter l'emplacement de la requête de certificat du sub CA

Ici vous pouvez choisir l'emplacement des logs du sub CA

Lancer la configuration sub CA

Cliquer sur Close


Rappelez vous, juste avant une demande de certificat pour le Sub Ca a été généré sous la forme d'un fichier .req sur le disque dur.

Copiez ce .req sur le serveur du Root CA

Toujours sur le Root CA, importez la demande en adaptant la commande suivante

certreq -submit <emplacement_du_.req>
Lien vers le fichier : cliquez ici Copier le code

Cliquer sur Ok

Accéder à la console avec certsrv.msc
Aller sous Issued Certificates et valider la demande de certificat du sub ca en cliquant sur Issue

Sous Issued Certificates, on voit les certificats générés par l'autorité de certification.
Ils sont numérotés. Relevé le numéro de celui qui correspond à la sub CA
puis adapter la commande suivante pour le récupérer.

L'extension doit être en .crt

certreq -retrieve <numéro_certificat> <Chemin_du_certificat_généré.crt>
Lien vers le fichier : cliquez ici Copier le code

Exemple

Cliquer sur Ok

Copier le certificat en .crt du sub ca sur le sub ca ainsi que le .rsp

Sur le sub ca, démarrer le service du sub ca

Répondre oui à la question

Filtrer sur .crt puis sélectionner certificat du sub ca

La subCA doit démarrer


Pour paramétrer la CRL sur le subCA

certutil -setreg CA\CRLPublicationURLs "65:D:\CertEnroll\%3%8%9.crl\n79:ldap:///CN=%7%8,CN=%2,CN=CDP,CN=Public Key Services,CN=Services,%6%10\n6:http://pki.mydomain.local/CertEnroll/%3%8%9.crl"
Lien vers le fichier : cliquez ici Copier le code

Et pour paramétrer AIA sur la SubCA

certutil -setreg CA\CACertPublicationURLs "65:D:\CertEnroll\MySubCa-CA.crt\n6:http://pki.mydomain.local/CertEnroll/MySubCa-CA.crt\n79:ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11"
Lien vers le fichier : cliquez ici Copier le code

Ce que ces commandes font c'est qu'elles viennent renseigner ce qu'il y a sous Select extension à savoir la CRL distribution point (CDP) et Authority Information Access (AIA).
Ces données sont super importantes car elles seront diffusées dans les certificats délivrés.
Il faut que les informations du CDP et de l'AIA soit diffusées par le chemin LDAP et une page web en http (pas https). La page web est importante pour les postes Linux.

RonArestia en parle dans https://techcommunity.microsoft.com/blog/coreinfrastructureandsecurityblog/crl--aia-publishing-guidance-practical-pki-part-2/4485713

Il indique par exemple qu'il n'y a pas de problème de sécurité à exposer le CDP et l'AIA sur une page en http, tout ce qu'on expose ce sont des fichiers texte avec des informations qui doivent être publiques.
http consomme également moins de ressources qu'une requête LDAP.

Dans https://learn.microsoft.com/fr-fr/windows-server/networking/core-network-guide/cncg/server-certs/configure-the-cdp-and-aia-extensions-on-ca1

Il est indiqué ce qu'il faut cocher. Pour la CRL en http c'est
_ Publier les listes de révocation de certificats sur cet emplacement
_ Publier les listes de révocation de certificats delta sur cet emplacement

Pour AIA c'est Inclure dans l’AIA des certificats émis.

Pour en revenir à la commande de configuration, la commande, %3%8%9.crl sera ici transformée en <CaName><CRLNameSuffix><DeltaCRLAllowed> sur le serveur

qui sera lui même transformé ici en mydomain-MYSUBCA-CA

Redémarrer le service avec cette commande Powershell

Restart-Service CertSvc -force
Lien vers le fichier : cliquez ici Copier le code

On va installer un IIS tout basique juste pour mettre à disposition la CRL et l'AIA via un lien http
Dans cet exemple l'url sera http://pki.mydomain.local

Donc via server manager on lance l'installation d'un rôle, next next etc ..

Cocher le role IIS

Add Features etc ...

Rien de spécial dans les rôles à choisir

Install

Normalement le répertoire D:\CertEnroll existe déjà

Aller dans l'interface de gestion de IIS

Cliquer sur Add Virtual Directory

Et créer le virtual directory CertEnroll

Pour autoriser les caractères spéciaux

Cd C:\Windows\System32\inetsrv
appcmd set config "Default Web Site" /section:system.webserver/Security/requestFiltering -allowDoubleEscaping:True
Lien vers le fichier : cliquez ici Copier le code

Redémarrer IIS avec

iisreset
Lien vers le fichier : cliquez ici Copier le code

Il faut déclare pki.mydomain.local dans le dns
Sur l'AD, lancer la console avec

dnsmgmt.msc
Lien vers le fichier : cliquez ici Copier le code

Ici j'ai fait un alias qui pointe sur la subca car le serveur héberge le site

Sur le serveur de la SubCA dans D:\CertEnroll
Faire un fichier index.html
et y placer un texte comme It Works !

Avec un navigateur web, vérifier que votre url répond

Dans mon cas c'est http://pki.mydomain.local/CertEnroll/
mais il faut adapter avec votre site

On va faire un premier contrôle de l'état de la pki avec

pkiview.msc
Lien vers le fichier : cliquez ici Copier le code

Ici le rootCA est non joignable
et le premier AIA location du subCA est en erreur.
Cela vient du fait que le certificat du subCA n'est pas dans le répertoire CertEnroll

Pour placer un certificat public du subCA dans CertEnroll,
aller dans les propriétés de la subCA

Aller sur le certificat du subCA

Dans les détails, faire un copy to file

Export le certificat du subCA (en base64 de préférence mais ce n'est pas une obligation)

Mettre le certificat dans D:\CertEnroll
Pour le nom du fichier, mettre MySubCa-CA.crt

bien mettre un .crt et non un .cer vu que c'est ce qu'on a indiqué dans le chemin sous forme d'url pour le AIA

Rappel

Après refresh, pkiView est maintenant ok pour le subCA

Pour le rootCA il y a encore une erreur. Cela vient du fait que le fichier rootcacrl.crl n'existe pas encore dans D:\CertEnroll

copier la crl qui est sur le rootCA sur le subCA

sur le subCA, renommer la copie du fichier de la crl du rootCA avec le nom attendu

Un refresh de pkiView montre maintenant quelque-chose de clean

Ajouter un rôle

Next next

Cocher Active Directory Services

Add Features

Next next next next next

Install

Close

On règle la durée de validité du certificat avec certutil

certutil -setreg ca\ValidityPeriod "Years"  
certutil -setreg ca\ValidityPeriodUnits "5" 
Lien vers le fichier : cliquez ici Copier le code

Voici les explications

Pareil avec la CRL

certutil -setreg CA\CRLPeriodUnits 1 
certutil -setreg CA\CRLPeriod "Years" 
certutil -setreg CA\CRLOverlapPeriod "Months" 
certutil -setreg CA\CRLOverlapUnits 6 
Lien vers le fichier : cliquez ici Copier le code

D'expérience, sans que je sache comment, les certificats de la RootCA et de la SubCA de votre PKI Microsoft seront diffusés sur les postes clients Windows automatiquement. Pour le SubCA qui est intégré à l'AD on a vu là-dessus qu'il n'y avait rien à faire, et pour la RootCA il faut jouer avec la commande certutil -dsPublish (voir la partie 1).

Etrangement, cette doc MS indique qu'il faut paramétrer la gpo Computer Configuration\Policies\Windows Settings\Security Settings\Public Key Policies puis faire un clic droit sur Trusted Root Certification Authorities pour y importer le certificat Root etc ... Comme je vous disais, pour nous cela s'est diffusé sans qu'on ait à le faire, mais cela peut faire ceinture/bretelles.

Parcontre, comme vu sur blog.matrixpost.net, l'enrollment et le renouvellement automatique des certificats émis aux clients (certificats utilisateur, ordinateur, etc.) est géré par la gpo Computer Configuration>Policies>Windosw Settings>Security Settings>Public Key Policies/Certificate Service Client - Auto Enrollment Settings


Comme dit sur https://specterops.io/blog/2021/06/17/certified-pre-owned/
Il y a des choses à faire pour éviter de se faire trouer par un pentest.

Faire très attention aux droits, notamment sur les templates qui permettent de mettre ce qu'on veut dans le Subject Name.
De façon globale, il serait extrêmement préoccupant qu'un attaquant puisse obtenir un certificat « Tout usage » ou un certificat d'autorité de certification subordonnée (SubCA) : on ne s'en doutait pas !

Désactivation du flag EDITF_ATTRIBUTESUBJECTALTNAME2

certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
Lien vers le fichier : cliquez ici Copier le code

Utiliser PSPKIAudit que l'on trouve sur https://github.com/GhostPack/PSPKIAudit
Il vous faudra pour cela le client Git pour Windows. Après il faut suivre la partie Setup.

Publicité