Active Directory
Déployer une PKI d'entreprise avec AD CS : CA racine hors ligne et CA émettrice

Déployer une PKI d'entreprise avec AD CS : CA racine hors ligne et CA émettrice

Architecture PKI à deux niveaux (Two-Tier PKI)

L'architecture recommandée par Microsoft se compose de deux niveaux :

  • CA Racine (Root CA) : autorité de confiance ultime, installée sur un serveur hors ligne et rangée en salle sécurisée. Elle ne délivre des certificats qu'à la CA Émettrice.
  • CA Émettrice (Issuing CA / Subordinate CA) : connectée au domaine AD, elle émet les certificats pour les utilisateurs, machines et services.

1. Installation de la CA Racine (serveur hors ligne, non joint au domaine)

# Sur le serveur Root CA (Windows Server 2022 Core recommandé)
# Installer le rôle AD CS
Install-WindowsFeature -Name ADCS-Cert-Authority -IncludeManagementTools

# Configurer la Root CA autonome (Standalone)
Install-AdcsCertificationAuthority `
  -CAType StandaloneRootCA `
  -CACommonName "TechByHM-Root-CA" `
  -CADistinguishedNameSuffix "DC=techbyhm,DC=local" `
  -KeyLength 4096 `
  -HashAlgorithmName SHA256 `
  -ValidityPeriod Years `
  -ValidityPeriodUnits 20 `
  -CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
  -Force

2. Configurer les CDP et AIA de la Root CA

# Configurer les points de distribution CRL (CRL Distribution Points)
$cdp = "http://pki.techbyhm.local/CertEnroll/.crl"
$aia = "http://pki.techbyhm.local/CertEnroll/_.crt"

Set-CACRLDistributionPoint -Uri $cdp -AddToCertificateCDP $true -Force
Set-CAAuthorityInformationAccess -Uri $aia -AddToCertificateAia $true -Force

# Émettre la CRL initiale
certutil -crl

# Publier le certificat Root CA et la CRL vers le partage réseau PKI
certutil -ca.cert "\SRV-PKI-ISSUINGpkiTechByHM-Root-CA.crt"
certutil -ca.crl  "\SRV-PKI-ISSUINGpkiTechByHM-Root-CA.crl"

3. Installer la CA Émettrice (serveur joint au domaine)

# Installer AD CS (Enterprise Subordinate CA)
Install-WindowsFeature -Name ADCS-Cert-Authority, ADCS-Web-Enrollment `
    -IncludeManagementTools

# Demander le certificat de la Sub CA signé par la Root CA
# 1. Générer la requête de subordination
Install-AdcsCertificationAuthority `
  -CAType EnterpriseSubordinateCA `
  -CACommonName "TechByHM-Issuing-CA" `
  -CADistinguishedNameSuffix "DC=techbyhm,DC=local" `
  -KeyLength 2048 `
  -HashAlgorithmName SHA256 `
  -OutputCertRequestFile "C:PKIIssuingCA.req" `
  -Force

# 2. Transmettre le fichier .req à la Root CA (clé USB chiffrée)
# Sur la Root CA hors ligne :
certreq -submit -config "ROOTCATechByHM-Root-CA" IssuingCA.req IssuingCA.crt

# 3. Installer le certificat signé sur la Sub CA
Install-AdcsCertificationAuthority -CAType EnterpriseSubordinateCA `
  -CertFile "C:PKIIssuingCA.crt" -Force

4. Publier le certificat Root CA dans AD

# Publier le certificat Root CA dans le magasin NTAuthCertificates et Root CA d'AD
certutil -dspublish -f "C:PKITechByHM-Root-CA.crt" RootCA
certutil -dspublish -f "C:PKITechByHM-Root-CA.crt" NTAuthCA

# Vérifier la publication
certutil -viewdelstore "ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=techbyhm,DC=local?cACertificate?one?objectClass=certificationAuthority"

5. Créer et déployer des modèles de certificats

# Dupliquer le template "Computer" pour créer un template personnalisé
# (via MMC certtmpl.msc — interface graphique recommandée)

# Activer le template sur la CA émettrice via PowerShell
$ca = "SRV-PKI-ISSUINGTechByHM-Issuing-CA"
certutil -setcatemplates +TechByHMComputer

# Déployer les certificats machine via GPO (auto-enrollment)
# Computer Config > Windows Settings > Security Settings
# > Public Key Policies > Certificate Services Client – Auto-Enrollment
# → Renew expired certificates, update pending certificates... = Enabled

6. Surveillance de la PKI

# Vérifier l'état de la CRL (expiration, accessibilité)
certutil -url "http://pki.techbyhm.local/CertEnroll/TechByHM-Root-CA.crl"

# Lister tous les certificats émis par la CA
certutil -view -restrict "Disposition=20" -out "RequestID,RequesterName,CommonName,NotAfter"

# Alerter sur les certificats expirant dans les 30 prochains jours
$deadline = (Get-Date).AddDays(30)
certutil -view -restrict "Disposition=20,NotAfter<=$deadline" `
         -out "RequestID,RequesterName,CommonName,NotAfter" | Format-Table

Conclusion

Une PKI à deux niveaux avec CA racine hors ligne constitue la base d'une infrastructure de confiance solide. Elle permet d'émettre des certificats pour le chiffrement des communications (LDAPS, RDP, IIS), l'authentification par carte à puce et la signature des scripts PowerShell. Un investissement de quelques heures qui sécurise durablement votre SI.

MAKHZOUM Hussein
Auteur
MAKHZOUM Hussein
Consultant Cloud & Infrastructure Engineer
Voir le profil

Articles similaires