Même avec une configuration appropriée, LDAPS peut rencontrer des problèmes. Voici les problèmes les plus courants et leurs solutions.
Erreurs de validation de certificat
Si les clients rencontrent des erreurs de validation de certificat, vérifiez les propriétés du certificat :
# Vérifier les détails du certificat
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*$env:COMPUTERNAME*"} | Format-List Subject, Issuer, NotAfter, Extensions
Problèmes courants de certificat :
- Nom de sujet non correspondant : Le CN du certificat doit correspondre au FQDN utilisé pour se connecter
- Certificat expiré : Vérifiez la date NotAfter
- CA non approuvée : Installez votre certificat CA interne sur les machines clientes
Exigences de signature LDAP
Windows peut exiger une signature LDAP, provoquant des erreurs "Authentification forte requise". Vérifiez le paramètre actuel :
# Vérifier les exigences de signature LDAP
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LDAPServerIntegrity"
Valeurs : 0 = Aucune, 1 = Négocier la signature, 2 = Exiger la signature
Pour modifier les exigences de signature LDAP :
# Définir la signature LDAP pour négocier (recommandé)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LDAPServerIntegrity" -Value 1
Restart-Service NTDS -Force
Problèmes de port et de pare-feu
Vérifiez que LDAPS écoute sur le port 636 :
netstat -an | findstr :636
Vérifiez les règles du pare-feu Windows :
# Vérifier si le port LDAPS est autorisé
Get-NetFirewallRule -DisplayName "*LDAP*" | Get-NetFirewallPortFilter
Créer une règle de pare-feu si nécessaire :
# Autoriser LDAPS à travers le pare-feu
New-NetFirewallRule -DisplayName "LDAPS-In" -Direction Inbound -Protocol TCP -LocalPort 636 -Action Allow
Analyse des journaux d'événements
Vérifiez les erreurs liées à LDAPS dans les journaux d'événements :
# Vérifier les erreurs de certificat et LDAPS
Get-WinEvent -FilterHashtable @{LogName='System'; ID=1220,1221,1222} -MaxEvents 10
Get-WinEvent -FilterHashtable @{LogName='Directory Service'; ID=1220,1221} -MaxEvents 10
Avertissement : Ne désactivez jamais la validation des certificats en production. Si vous rencontrez des erreurs de certificat, corrigez le certificat plutôt que de contourner la validation.
Vérification : Utilisez le script de test complet pour valider tous les aspects de votre configuration LDAPS :
# Vérification complète de la santé LDAPS
function Test-LDAPS {
param([string]$DomainController)
Write-Host "Test de LDAPS sur $DomainController" -ForegroundColor Cyan
# Tester la connectivité du port
$portTest = Test-NetConnection -ComputerName $DomainController -Port 636 -WarningAction SilentlyContinue
if ($portTest.TcpTestSucceeded) {
Write-Host "✓ Le port 636 est accessible" -ForegroundColor Green
} else {
Write-Host "✗ Le port 636 n'est pas accessible" -ForegroundColor Red
return
}
# Tester la connexion LDAPS
try {
$ldap = New-Object System.DirectoryServices.DirectoryEntry("LDAPS://$DomainController:636")
$ldap.RefreshCache()
Write-Host "✓ Connexion LDAPS réussie" -ForegroundColor Green
} catch {
Write-Host "✗ Échec de la connexion LDAPS : $($_.Exception.Message)" -ForegroundColor Red
}
}
# Tester tous les contrôleurs de domaine
Get-ADDomainController -Filter * | ForEach-Object { Test-LDAPS -DomainController $_.HostName }