Installer l'autorité de certification sur Windows server partie 2
Installation du subCA
Création du certificat du subCA
Paramétrage
Diffusion du RootCA et de la SubCA
Hardening
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
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
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
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
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
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
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
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
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
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
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
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.
Article(s) suivant(s)
Article(s) précédent(s)
Article(s) en relation(s)