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

🪟 Windows 📋 6 causes 🔧 5 solutions
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

terminal
# 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.cer
2

Déployer la CA racine dans le magasin de confiance

terminal
# 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

terminal
# 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

terminal
:: 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

terminal
# 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