Erreurs
❌ Erreur Windows "Certificat expiré ou non approuvé" — Causes et Solutions
🪟 Windows / Active Directory
Le certificat SSL/TLS est expiré, auto-signé ou la chaîne de confiance est invalide
Les erreurs de certificat surviennent quand le certificat SSL/TLS présenté est expiré, auto-signé sans être dans le magasin de confiance, ou émis par une CA inconnue. En entreprise, ces erreurs concernent souvent les certificats PKI internes (AD CS).
⚠️ Causes possibles
Certificat expiré
La date de validité du certificat est dépassée — le plus fréquent
CA racine non approuvée
La CA interne (AD CS) n'est pas dans le magasin des autorités de confiance
Nom de domaine incorrect (SAN)
Le certificat ne couvre pas le nom DNS utilisé pour la connexion
Certificat révoqué
Le certificat a été révoqué par la CA (CRL ou OCSP inaccessible)
Chaîne de certificats incomplète
Les certificats intermédiaires ne sont pas envoyés par le serveur
Auto-renouvellement non configuré
L'auto-enrollment AD CS n'est pas actif pour les machines du domaine
🔧 Solutions étape par étape
1
Inspecter le certificat
# Via PowerShell — inspecter un certificat local
Get-ChildItem -Path Cert:\LocalMachine\My | Select-Object Subject, NotAfter, Thumbprint | Sort-Object NotAfter
# Voir les certificats expirant dans 30 jours
Get-ChildItem -Path Cert:\LocalMachine\My |
Where-Object { $_.NotAfter -lt (Get-Date).AddDays(30) } |
Select-Object Subject, NotAfter
# Inspecter un certificat distant
$tcp = New-Object System.Net.Sockets.TcpClient("serveur.domaine.local", 443)
$ssl = New-Object System.Net.Security.SslStream($tcp.GetStream())
$ssl.AuthenticateAsClient("serveur.domaine.local")
$cert = $ssl.RemoteCertificate
Write-Host "Expire le : $($cert.GetExpirationDateString())"
Write-Host "Sujet : $($cert.Subject)"
# Via certutil
certutil -verify -urlfetch certificat.cer2
Déployer la CA racine dans le magasin de confiance
# Exporter la CA racine depuis AD CS
certutil -ca.cert C:\Temp\CA_Racine.cer
# Importer dans le magasin des autorités de confiance
certutil -addstore "Root" C:\Temp\CA_Racine.cer
# Déployer via GPO (toutes les machines du domaine)
# GPMC → GPO → Config Ordi → Paramètres Windows
# → Paramètres de sécurité → Stratégies de clé publique
# → Autorités de certification racines de confiance
# → Importer le fichier .cer
# Vérifier le magasin de confiance
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -like "*MonCA*"}3
Renouveler un certificat AD CS
# Demander un nouveau certificat via AD CS (auto-enrollment) # Prérequis : GPO auto-enrollment activée # Forcer l'auto-enrollment certutil -pulse # Via l'interface MMC # mmc → Fichier → Ajouter/Supprimer un composant → Certificats # Certificats personnels → Toutes les tâches → Demander un nouveau certificat # Via PowerShell (si modèle disponible) Get-Certificate -Template "WebServeur" -CertStoreLocation Cert:\LocalMachine\My ` -DnsName "serveur.domaine.local" # Vérifier les modèles disponibles certutil -template
4
Diagnostiquer avec certutil
:: Vérifier un certificat et sa chaîne certutil -verify -urlfetch certificat.cer :: Voir tous les certificats du magasin personnel certutil -store My :: Tester la révocation (CRL/OCSP) certutil -verify -urlfetch certificat.cer 2>&1 | findstr /i "revok" :: Voir l'état de la CA certutil -ping certutil -ca :: Voir les certificats expirant bientôt certutil -store My | findstr "NotAfter"
5
Renouveler un certificat IIS / RDP / Exchange
# IIS — renouveler un certificat
Import-Module WebAdministration
# Lister les certificats IIS
Get-ChildItem IIS:\SslBindings
# Assigner un nouveau certificat à un site IIS
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*monsite*"} | Select-Object -First 1
New-WebBinding -Name "Default Web Site" -Protocol https -Port 443
$binding = Get-WebBinding "Default Web Site" -Protocol "https"
$binding.AddSslCertificate($cert.Thumbprint, "My")
# RDP — voir section erreur-windows-rdp-auth.html
# Let's Encrypt avec win-acme (gratuit)
# Télécharger win-acme.exe → lancer et suivre l'assistant🛡️ Comment éviter cette erreur
- ✅ Mettre en place une alerte sur l'expiration des certificats à J-60 et J-30 via Zabbix ou scripts PowerShell
- ✅ Configurer l'auto-enrollment AD CS via GPO pour les certificats machines et utilisateurs
- ✅ Utiliser des durées de validité courtes (1-2 ans max) et planifier le renouvellement dans un calendrier partagé
- ✅ Déployer la CA racine interne via GPO dès le début — évite 99% des erreurs de confiance
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google