ANAVEM
Languageen
Windows certificate management dashboard showing SSL/TLS certificate validation in a security operations center
Event ID 5378ErrorSCHANNELWindows

ID d'événement Windows 5378 – SCHANNEL : Erreur de validation de la chaîne de certificats TLS/SSL

L'ID d'événement 5378 indique que SCHANNEL a rencontré une erreur de validation de chaîne de certificats lors de la poignée de main TLS/SSL, généralement en raison de certificats racine non fiables ou de chaînes de certificats incomplètes.

Emanuel DE ALMEIDAEmanuel DE ALMEIDA
18 mars 202612 min de lecture 0
Event ID 5378SCHANNEL 5 méthodes 12 min
Référence événement

Signification de cet événement

L'ID d'événement Windows 5378 représente un événement de sécurité critique généré par le fournisseur de support de sécurité SCHANNEL lorsque la validation de la chaîne de certificats échoue lors de l'établissement de la connexion TLS/SSL. SCHANNEL effectue une validation rigoureuse des certificats conformément aux normes RFC 5280, vérifiant les signatures des certificats, les périodes de validité, le statut de révocation et les chaînes de confiance jusqu'à une autorité de certification racine de confiance.

Le processus de validation implique plusieurs étapes : vérification de la signature du certificat, vérification de la validité des dates, validation de l'objectif du certificat et, surtout, construction d'une chaîne de confiance complète du certificat serveur à travers les certificats intermédiaires jusqu'à une autorité de certification racine de confiance dans le magasin de certificats Windows. Lorsqu'une étape échoue, SCHANNEL génère l'ID d'événement 5378 et fournit des codes d'erreur spécifiques indiquant la raison de l'échec.

Cet événement est particulièrement significatif dans les environnements d'entreprise où l'authentification basée sur les certificats est obligatoire pour la conformité. Les applications s'appuyant sur SCHANNEL pour des communications sécurisées échoueront à établir des connexions lorsque cette erreur se produit, impactant potentiellement les services web, les systèmes de messagerie, les connexions aux bases de données et les intégrations API. Les détails de l'événement incluent l'empreinte numérique du certificat, permettant aux administrateurs d'identifier le certificat spécifique à l'origine des problèmes.

Comprendre cet événement est crucial pour maintenir une infrastructure de communications sécurisée, car les erreurs de validation des certificats peuvent indiquer des attaques de sécurité, des mauvaises configurations ou des certificats expirés nécessitant une attention immédiate.

S'applique à

Windows 10Windows 11Windows Server 2019/2022/2025
Analyse

Causes possibles

  • Autorité de certification racine non approuvée absente du magasin de certificats Windows
  • Certificats intermédiaires manquants dans la chaîne de certificats
  • Certificats expirés ou pas encore valides dans la chaîne
  • Échecs de validation de la liste de révocation de certificats (CRL) ou OCSP
  • Certificats auto-signés sans configuration de confiance appropriée
  • Longueur de la chaîne de certificats dépassant les limites de Windows
  • Données de certificat malformées ou corrompues
  • Problèmes de synchronisation temporelle causant des échecs de validation de date
  • Inadéquation de l'objectif du certificat (authentification serveur vs authentification client)
  • Algorithmes cryptographiques faibles non pris en charge par les politiques de sécurité actuelles
Méthodes de résolution

Étapes de dépannage

01

Examiner les détails de l'événement et les informations du certificat

Commencez par examiner les détails complets de l'événement pour identifier le certificat spécifique et le code d'erreur :

  1. Ouvrez Observateur d'événementsJournaux WindowsSystème
  2. Filtrez pour l'ID d'événement 5378 en utilisant l'option de filtre
  3. Double-cliquez sur l'événement 5378 le plus récent pour voir les détails
  4. Notez l'empreinte numérique du certificat et la description de l'erreur dans les données de l'événement
  5. Utilisez PowerShell pour récupérer des informations détaillées sur le certificat :
# Obtenir les détails du certificat par empreinte numérique
$thumbprint = "PASTE_THUMBPRINT_HERE"
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Thumbprint -eq $thumbprint} | Format-List *

# Vérifiez tous les magasins de certificats pour le certificat
Get-ChildItem -Path Cert:\LocalMachine -Recurse | Where-Object {$_.Thumbprint -eq $thumbprint}

Examinez la période de validité du certificat, les informations sur l'émetteur et les objectifs prévus. Cette analyse initiale aide à déterminer si le problème est l'expiration du certificat, l'absence de confiance ou des problèmes de chaîne.

02

Vérifier la chaîne de certificats et le magasin de confiance

Validez la chaîne complète de certificats et assurez-vous que tous les certificats requis sont présents :

  1. Utilisez PowerShell pour tester la construction de la chaîne de certificats :
# Testez la chaîne de certificats pour un serveur spécifique
$serverName = "your-server.domain.com"
$port = 443

# Créez une connexion TCP et récupérez le certificat
$tcpClient = New-Object System.Net.Sockets.TcpClient
$tcpClient.Connect($serverName, $port)
$sslStream = New-Object System.Net.Security.SslStream($tcpClient.GetStream())
$sslStream.AuthenticateAsClient($serverName)
$cert = $sslStream.RemoteCertificate
$sslStream.Close()
$tcpClient.Close()

# Affichez la chaîne de certificats
$cert2 = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($cert)
$chain = New-Object System.Security.Cryptography.X509Certificates.X509Chain
$chain.Build($cert2)
$chain.ChainElements | ForEach-Object { $_.Certificate | Format-List Subject, Issuer, NotAfter }
  1. Vérifiez les autorités de certification racines de confiance :
# Liste des AC racines de confiance
Get-ChildItem -Path Cert:\LocalMachine\Root | Format-Table Subject, Thumbprint, NotAfter

# Vérifiez une AC racine spécifique
Get-ChildItem -Path Cert:\LocalMachine\Root | Where-Object {$_.Subject -like "*YourCA*"}
  1. Vérifiez que les certificats intermédiaires sont installés :
# Vérifiez le magasin de certificats intermédiaires
Get-ChildItem -Path Cert:\LocalMachine\CA | Format-Table Subject, Issuer, NotAfter
03

Installer les certificats manquants et mettre à jour le magasin de confiance

Installez les certificats racine ou intermédiaires manquants pour compléter la chaîne de confiance :

  1. Téléchargez le certificat racine requis auprès de votre autorité de certification
  2. Installez le certificat racine en utilisant PowerShell :
# Installer le certificat racine
$certPath = "C:\path\to\rootca.cer"
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certPath)
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Root", "LocalMachine")
$store.Open("ReadWrite")
$store.Add($cert)
$store.Close()

Write-Host "Certificat racine installé avec succès"
  1. Installez les certificats intermédiaires :
# Installer le certificat intermédiaire
$intermediatePath = "C:\path\to\intermediate.cer"
$intermediateCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($intermediatePath)
$intermediateStore = New-Object System.Security.Cryptography.X509Certificates.X509Store("CA", "LocalMachine")
$intermediateStore.Open("ReadWrite")
$intermediateStore.Add($intermediateCert)
$intermediateStore.Close()
  1. Mettez à jour les listes de révocation de certificats :
# Forcer la mise à jour de la CRL
certlm.msc
# Naviguez vers Autorités de certification intermédiaires → Certificats
# Clic droit sur le certificat → Toutes les tâches → Mettre à jour la liste de révocation de certificats
  1. Testez la connexion après l'installation du certificat pour vérifier la correction
04

Configurer les politiques de validation des certificats et les paramètres du registre

Modifier le comportement de validation des certificats via les paramètres du registre et la stratégie de groupe :

  1. Configurer les paramètres du registre de validation des certificats :
# Désactiver la vérification de révocation des certificats (dépannage temporaire uniquement)
$regPath = "HKLM:\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config"
New-ItemProperty -Path $regPath -Name "MaxUrlRetrievalTimeoutMilliseconds" -Value 15000 -PropertyType DWord -Force
New-ItemProperty -Path $regPath -Name "MaxUrlRetrievalByteCount" -Value 100000000 -PropertyType DWord -Force
  1. Configurer la journalisation SCHANNEL pour un dépannage détaillé :
# Activer la journalisation des événements SCHANNEL
$schannelPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL"
New-ItemProperty -Path $schannelPath -Name "EventLogging" -Value 7 -PropertyType DWord -Force
  1. Définir la stratégie de chaîne de certificats via le registre :
# Configurer la stratégie de chaîne de certificats
$chainPath = "HKLM:\SOFTWARE\Policies\Microsoft\SystemCertificates\ChainEngine\Config"
if (!(Test-Path $chainPath)) { New-Item -Path $chainPath -Force }
New-ItemProperty -Path $chainPath -Name "MaxUrlRetrievalTimeoutMilliseconds" -Value 30000 -PropertyType DWord -Force
  1. Redémarrer les services affectés pour appliquer les modifications :
# Redémarrer le service HTTP et les services dépendants
Restart-Service -Name "HTTP" -Force
Restart-Service -Name "W3SVC" -Force -ErrorAction SilentlyContinue
Avertissement : La modification des paramètres de validation des certificats peut affecter la sécurité. Désactivez la vérification de révocation uniquement temporairement pour le dépannage.
05

Analyse avancée de la chaîne de certificats et dépannage réseau

Effectuer une analyse complète de la chaîne de certificats et un dépannage au niveau du réseau :

  1. Utiliser les outils OpenSSL pour une analyse détaillée des certificats :
# Télécharger et analyser la chaîne de certificats en utilisant PowerShell
$serverName = "problematic-server.com"
$port = 443

# Créer un rapport détaillé de la chaîne de certificats
$webRequest = [Net.WebRequest]::Create("https://$serverName")
try {
    $webRequest.GetResponse()
} catch {
    $exception = $_.Exception
    if ($exception.InnerException -is [System.Security.Authentication.AuthenticationException]) {
        Write-Host "Échec de la validation du certificat : $($exception.InnerException.Message)"
    }
}
  1. Analyser l'accessibilité de la liste de révocation des certificats :
# Tester l'accessibilité des points de terminaison CRL et OCSP
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*your-cert*"}
$cert.Extensions | Where-Object {$_.Oid.FriendlyName -eq "CRL Distribution Points"} | ForEach-Object {
    $_.Format($true)
}

# Tester le répondeur OCSP
$cert.Extensions | Where-Object {$_.Oid.FriendlyName -eq "Authority Information Access"} | ForEach-Object {
    $_.Format($true)
}
  1. Surveiller la validation des certificats en temps réel :
# Surveiller les événements SCHANNEL en temps réel
Get-WinEvent -FilterHashtable @{LogName='System'; Id=5378} -MaxEvents 10 | Format-Table TimeCreated, Id, LevelDisplayName, Message -Wrap

# Configurer une surveillance continue
Register-WmiEvent -Query "SELECT * FROM Win32_NTLogEvent WHERE LogFile='System' AND EventCode=5378" -Action {
    $event = $Event.SourceEventArgs.NewEvent
    Write-Host "Erreur de validation du certificat détectée à $($event.TimeGenerated)"
    Write-Host "Message : $($event.Message)"
}
  1. Créer un rapport complet de validation des certificats :
# Générer un rapport de validation des certificats
$report = @()
Get-ChildItem -Path Cert:\LocalMachine\My | ForEach-Object {
    $cert = $_
    $chain = New-Object System.Security.Cryptography.X509Certificates.X509Chain
    $isValid = $chain.Build($cert)
    
    $report += [PSCustomObject]@{
        Subject = $cert.Subject
        Thumbprint = $cert.Thumbprint
        NotAfter = $cert.NotAfter
        IsValid = $isValid
        ChainStatus = ($chain.ChainStatus | ForEach-Object { $_.Status }) -join ", "
    }
}
$report | Export-Csv -Path "C:\temp\certificate-validation-report.csv" -NoTypeInformation

Aperçu

L'ID d'événement 5378 se déclenche lorsque le fournisseur SCHANNEL (Secure Channel) de Windows rencontre une erreur de validation de la chaîne de certificats lors des négociations de poignée de main TLS/SSL. Cet événement apparaît dans le journal Système lorsque Windows ne peut pas établir la confiance pour la chaîne de certificats d'un serveur distant, soit parce que l'autorité de certification racine n'est pas de confiance, soit parce que des certificats intermédiaires manquent, soit parce que la chaîne de certificats est mal formée.

SCHANNEL est l'implémentation native TLS/SSL de Windows qui gère les communications sécurisées pour les applications, y compris IIS, Exchange, SQL Server, et toute application utilisant les API WinHTTP ou WinINet. Lorsque la validation du certificat échoue, SCHANNEL enregistre cet événement et termine généralement la tentative de connexion.

Ce type d'événement se produit couramment dans les environnements d'entreprise où des autorités de certification internes sont utilisées, lors des renouvellements de certificats, ou lors de connexions à des services externes avec des problèmes de configuration de certificats. L'événement fournit des informations de débogage cruciales, y compris l'empreinte numérique du certificat et les détails de l'erreur de validation.

Questions Fréquentes

Que signifie l'ID d'événement Windows 5378 et quand se produit-il ?+
L'ID d'événement 5378 indique que le fournisseur de sécurité SCHANNEL de Windows a rencontré une erreur de validation de chaîne de certificats lors de la poignée de main TLS/SSL. Cela se produit lorsque Windows ne peut pas établir la confiance pour le certificat d'un serveur distant, généralement en raison de certificats racine manquants, de chaînes de certificats incomplètes, de certificats expirés ou d'échecs de vérification de révocation. L'événement se déclenche chaque fois que des applications utilisant SCHANNEL (comme IIS, Exchange, ou toute application utilisant WinHTTP) tentent d'établir des connexions sécurisées mais échouent à la validation des certificats.
Comment puis-je identifier quel certificat cause les erreurs d'ID d'événement 5378 ?+
L'ID d'événement 5378 contient l'empreinte numérique du certificat qui a échoué à la validation. Ouvrez le Visualiseur d'événements, accédez au journal Système, trouvez l'événement 5378 et examinez les données de l'événement pour l'empreinte numérique. Utilisez la commande PowerShell 'Get-ChildItem -Path Cert:\LocalMachine -Recurse | Where-Object {$_.Thumbprint -eq "THUMBPRINT"}' pour localiser le certificat. La description de l'événement inclut également le nom du serveur et l'erreur de validation spécifique, aidant à identifier le certificat et la connexion problématiques.
Les erreurs d'ID d'événement 5378 peuvent-elles être causées par des problèmes de connectivité réseau ?+
Oui, la connectivité réseau peut provoquer des erreurs d'ID d'événement 5378, en particulier lorsque les points de terminaison de la liste de révocation de certificats (CRL) ou des répondeurs OCSP sont inaccessibles. Si Windows ne peut pas accéder aux points de distribution CRL ou aux serveurs OCSP pour vérifier le statut de révocation des certificats, la validation échoue. Les restrictions de pare-feu, les configurations de proxy ou les problèmes de résolution DNS empêchant l'accès aux points de terminaison de l'autorité de certification déclencheront cet événement. Vérifiez la connectivité réseau aux URL CRL et OCSP répertoriées dans l'extension d'accès aux informations de l'autorité du certificat.
Comment puis-je corriger l'ID d'événement 5378 lors de l'utilisation d'autorités de certification internes ?+
Pour les autorités de certification internes, installez le certificat de l'autorité de certification racine dans le magasin des autorités de certification racines de confiance sur tous les systèmes affectés. Utilisez PowerShell : '$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("rootca.cer"); $store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Root", "LocalMachine"); $store.Open("ReadWrite"); $store.Add($cert); $store.Close()'. Assurez-vous également que les certificats intermédiaires sont installés dans le magasin des autorités de certification intermédiaires. Déployez les certificats via la stratégie de groupe pour les environnements d'entreprise.
Quels paramètres du registre peuvent aider à résoudre les erreurs persistantes d'ID d'événement 5378 ?+
Les paramètres de registre clés pour le dépannage incluent l'activation de la journalisation détaillée de SCHANNEL en définissant HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\EventLogging à 7. Augmentez les délais d'attente de récupération des certificats à HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config avec MaxUrlRetrievalTimeoutMilliseconds (30000) et MaxUrlRetrievalByteCount (100000000). Pour les tests uniquement, vous pouvez désactiver temporairement la vérification de révocation, mais cela réduit la sécurité et ne doit pas être utilisé dans des environnements de production.
Documentation

Références (2)

Emanuel DE ALMEIDA
Écrit par

Emanuel DE ALMEIDA

Senior IT Journalist & Cloud Architect

Microsoft MCSA-certified Cloud Architect | Fortinet-focused. I modernize cloud, hybrid & on-prem infrastructure for reliability, security, performance and cost control - sharing field-tested ops & troubleshooting.

Discussion

Partagez vos réflexions et analyses

Vous devez être connecté pour commenter.

Chargement des commentaires...