Lors de l’utilisation de certificats auto-signes ou de certificats provenant d’une Autorite de Certification (CA) non publique, les ordinateurs clients afficheront des avertissements de confiance car ils ne reconnaissent pas la CA emettrice. Plutot que d’installer manuellement le certificat sur chaque machine, vous pouvez distribuer automatiquement des certificats racine de confiance a tous les ordinateurs joints au domaine en utilisant Group Policy. Ce guide couvre la methode Group Policy, l’approche par ligne de commande certutil, Active Directory Certificate Services et les fondamentaux des magasins de certificats.
Comprendre les magasins de certificats
Windows organise les certificats dans des magasins selon leur objectif :
Magasins de certificats machine
| Magasin | Objectif |
|---|---|
| Trusted Root Certification Authorities | Certificats de CA racine auxquels l’ordinateur fait inheremment confiance. Toutes les chaines de certificats doivent se terminer par un certificat dans ce magasin. |
| Intermediate Certification Authorities | Certificats de CA subordonnees a une racine de confiance. Utilises pour completer les chaines de certificats. |
| Personal | Certificats emis pour l’ordinateur (comme les certificats SSL pour IIS). |
| Trusted Publishers | Certificats de signature de code d’editeurs de logiciels de confiance. |
Magasins de certificats utilisateur
Les magasins de certificats utilisateur ont la meme structure mais s’appliquent a l’utilisateur actuel plutot qu’a la machine. Les certificats dans le magasin machine s’appliquent a tous les utilisateurs de cet ordinateur.
Visualiser les magasins de certificats
Ouvrez le gestionnaire de certificats :
# Machine certificates (requires admin)
certlm.msc
# Current user certificates
certmgr.msc
Ou depuis la ligne de commande :
# List certificates in the Trusted Root store
certutil -store Root
# List certificates in the machine personal store
certutil -store My
Methode 1 : Distribution via Group Policy (Recommandee)
Group Policy est le moyen le plus fiable et evolutif pour distribuer des certificats aux ordinateurs du domaine.
Etape 1 : Exporter le certificat
Si vous n’avez pas encore exporte le certificat de la CA racine, faites-le depuis le serveur CA ou depuis toute machine qui l’a installe :
# Export from the certificate store
certutil -store Root "CA Name" C:\certs\rootca.cer
# Or export from a certificate file
# Open certlm.msc, find the certificate, right-click > All Tasks > Export
# Choose DER encoded binary X.509 (.CER) or Base-64 encoded X.509 (.CER)
Etape 2 : Creer ou modifier un Group Policy Object
- Ouvrez Group Policy Management (
gpmc.msc) - Creez un nouveau GPO ou modifiez-en un existant
- Liez le GPO au domaine (pour tous les ordinateurs) ou a une OU specifique (pour une distribution ciblee)
Etape 3 : Importer le certificat
- Dans l’editeur de GPO, naviguez vers :
Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Trusted Root Certification Authorities - Faites un clic droit sur Trusted Root Certification Authorities et selectionnez Import…
- Parcourez jusqu’au fichier de certificat (
.cer,.crtou.p7b) - Completez l’assistant d’importation en vous assurant que le magasin est defini sur Trusted Root Certification Authorities
Etape 4 : Distribuer les certificats intermediaires (si necessaire)
Si la chaine CA inclut des certificats intermediaires, importez-les separement :
- Naviguez vers :
Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Intermediate Certification Authorities - Importez le(s) certificat(s) de la CA intermediaire
Etape 5 : Verifier la distribution
Apres l’actualisation de Group Policy (jusqu’a 90 minutes, ou forcez-la immediatement) :
# Force Group Policy update
gpupdate /force
# Verify the certificate is in the store
certutil -store Root "Your CA Name"
# Or check via PowerShell
Get-ChildItem Cert:\LocalMachine\Root | Where-Object { $_.Subject -like "*Your CA*" }
Methode 2 : Utilisation de la ligne de commande certutil
Pour des installations ponctuelles ou des scripts sans Group Policy :
Ajouter un certificat au magasin racine de confiance
# Add to machine Trusted Root store (requires admin)
certutil -addstore Root C:\certs\rootca.cer
# Add to machine Intermediate store
certutil -addstore CA C:\certs\intermediate.cer
# Add to current user's Trusted Root store
certutil -user -addstore Root C:\certs\rootca.cer
Supprimer un certificat
# Remove from Trusted Root store by serial number
certutil -delstore Root "SerialNumberHere"
Script pour plusieurs machines
Combinez avec le PowerShell remoting pour un deploiement en masse :
$computers = Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=corp,DC=example,DC=com"
$certPath = "\\fileserver\share\certs\rootca.cer"
foreach ($computer in $computers) {
Invoke-Command -ComputerName $computer.Name -ScriptBlock {
param($cert)
certutil -addstore Root $cert
} -ArgumentList $certPath
}
Methode 3 : Active Directory Certificate Services (AD CS)
Si votre organisation gere sa propre PKI, Active Directory Certificate Services fournit une confiance automatique pour tous les membres du domaine.
Confiance automatique de la CA d’entreprise
Lorsque vous installez une CA d’entreprise (integree a Active Directory) :
- Le certificat de la CA racine est automatiquement publie dans AD
- Tous les ordinateurs joints au domaine font automatiquement confiance a la CA via le magasin NTAuth
- Aucune configuration manuelle de GPO n’est necessaire pour le certificat de la CA d’entreprise
Installation d’AD CS
# Install the AD CS role
Install-WindowsFeature AD-Certificate -IncludeManagementTools
# Configure as an Enterprise Root CA
Install-AdcsCertificationAuthority -CAType EnterpriseRootCa `
-CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
-KeyLength 4096 `
-HashAlgorithmName SHA256 `
-ValidityPeriod Years `
-ValidityPeriodUnits 10
Publication de certificats tiers dans AD
Vous pouvez publier des certificats racine externes dans Active Directory afin que tous les membres du domaine leur fassent confiance :
# Publish to AD's NTAuth store
certutil -dspublish -f C:\certs\external-root.cer RootCA
# Publish an intermediate CA
certutil -dspublish -f C:\certs\external-intermediate.cer SubCA
Cela publie le certificat dans le conteneur CN=Public Key Services,CN=Services,CN=Configuration,DC=corp,DC=example,DC=com dans AD.
Verifier les certificats publies dans AD
# View certificates published in AD
certutil -viewstore "ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=corp,DC=example,DC=com"
CA racine de confiance vs. CA intermediaires
Comprendre la chaine de certificats est essentiel pour une distribution correcte :
Structure de la chaine de certificats
Root CA Certificate (Self-signed, in Trusted Root store)
└── Intermediate CA Certificate (Signed by Root, in Intermediate store)
└── Server/Client Certificate (Signed by Intermediate, in Personal store)
Quoi va ou
- Les certificats de CA racine vont dans le magasin Trusted Root Certification Authorities
- Les certificats de CA intermediaire vont dans le magasin Intermediate Certification Authorities
- Les certificats de serveur vont dans le magasin Personal (My) sur le serveur
Erreur courante : Certificats intermediaires manquants
Un probleme courant est que la CA racine est de confiance mais l’intermediaire est absente. Le client ne peut pas construire la chaine complete, ce qui entraine des erreurs de confiance. Distribuez toujours les certificats racine et intermediaires.
Gestion des certificats avec PowerShell
Importer des certificats via PowerShell
# Import to machine Trusted Root store
Import-Certificate -FilePath "C:\certs\rootca.cer" `
-CertStoreLocation Cert:\LocalMachine\Root
# Import to machine Intermediate store
Import-Certificate -FilePath "C:\certs\intermediate.cer" `
-CertStoreLocation Cert:\LocalMachine\CA
# Import a PFX (certificate with private key)
Import-PfxCertificate -FilePath "C:\certs\server.pfx" `
-CertStoreLocation Cert:\LocalMachine\My `
-Password (ConvertTo-SecureString "password" -AsPlainText -Force)
Lister et rechercher des certificats
# List all trusted root certificates
Get-ChildItem Cert:\LocalMachine\Root
# Find certificates expiring within 30 days
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {
$_.NotAfter -lt (Get-Date).AddDays(30)
}
# Find certificates by subject
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {
$_.Subject -like "*Corp Root CA*"
}
Supprimer des certificats
# Remove by thumbprint
Get-ChildItem Cert:\LocalMachine\Root\AB1234567890ABCDEF | Remove-Item
Meilleures pratiques
- Utilisez Group Policy pour les environnements de domaine — C’est la methode la plus fiable, auditable et evolutive.
- Deployez une CA d’entreprise avec AD CS pour les besoins internes de certificats plutot que de s’appuyer sur des certificats auto-signes.
- Distribuez les certificats racine et intermediaires pour eviter les erreurs de chaine incomplete.
- Surveillez l’expiration des certificats — Les CA racine ont generalement une longue duree de vie (10-20 ans), mais suivez-les pour eviter les expirations surprises.
- Limitez ce que vous ajoutez au magasin racine de confiance — Chaque certificat dans ce magasin est entierement approuve. N’ajoutez que des CA auxquelles vous faites reellement confiance.
- Testez d’abord dans une OU de preprod — Avant de deployer des certificats a l’echelle du domaine, testez le GPO sur un sous-ensemble d’ordinateurs.
Resume
Distribuer des certificats racine de confiance dans un domaine elimine le besoin d’installation manuelle sur chaque ordinateur. Group Policy est l’approche recommandee pour les environnements Active Directory — importez le certificat dans la politique appropriee et laissez GP l’envoyer a toutes les machines ciblees. Pour les organisations ayant des besoins PKI internes, AD CS fournit une distribution automatique de la confiance pour les CA d’entreprise. Distribuez toujours la chaine complete de certificats (CA racine et intermediaires) et verifiez le deploiement avec certutil ou PowerShell.