Der SSL_PE_NO_CIPHER-Fehler tritt auf Endpunkt 5022 in SQL Server auf
Dieser Artikel hilft Ihnen, den Fehler im Zusammenhang mit dem Fehler zu beheben, der SSL_PE_NO_CIPHER
auf Endpunkt 5022 auftritt. Außerdem werden Skripts zum Erzwingen von Transport Layer Security (TLS) in verschiedenen Versionen von .NET Framework bereitgestellt.
Symptome
Der Ssl-Fehler "SSL_PE_NO_CIPHER" (Security Socket Layer) tritt auf Endpunktport 5022 auf, und es gibt eine Zeitverzögerung, die länger als 15 Sekunden ist und möglicherweise zu Timeouts führt. Es tritt auf, wenn der SSL-Handshake aufgrund eines Mangels an kompatiblen Verschlüsselungssammlungen zwischen Client und Server fehlschlägt. Dies kann passieren, wenn veraltete oder schwache Verschlüsselungsalgorithmen verwendet werden.
Lösung
Um diesen Fehler zu beheben, führen Sie folgende Schritte aus:
Aktualisieren Sie SSL- oder TLS-Bibliotheken. Stellen Sie sicher, dass sowohl der Client als auch der Server über aktuelle SSL- oder TLS-Bibliotheken verfügen. Veraltete Versionen unterstützen möglicherweise keine modernen und sicheren Verschlüsselungssammlungen.
Überprüfen Sie die Konfigurationen der Cipher Suite sowohl auf dem Client als auch auf dem Server. Stellen Sie sicher, dass moderne und sichere Verschlüsselungssammlungen zulässig sind. Erwägen Sie, veraltete oder schwache Verschlüsselungssammlungen zu deaktivieren.
Überprüfen Sie ssl- oder TLS-Protokollversionen. Vergewissern Sie sich, dass sowohl der Client als auch der Server die gleichen SSL- oder TLS-Protokollversionen unterstützen. Veraltete Protokollversionen sind möglicherweise nicht mit bestimmten Verschlüsselungssammlungen kompatibel. Wenn TLS 1.2 auf den Servern nicht vorhanden ist, führen Sie das folgende Skript aus, um TLS 1.2 unter .NET Framework zu erzwingen:
# .NET Framework v2.0.50727 New-Item -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "AspNetEnforceViewStateMac" -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1
# .NET Framework v4.0.30319 New-Item -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "AspNetEnforceViewStateMac" -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1
# Wow6432Node\Microsoft\.NETFramework\v2.0.50727 New-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "AspNetEnforceViewStateMac" -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1
# Wow6432Node\Microsoft\.NETFramework\v4.0.30319 New-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "AspNetEnforceViewStateMac" -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1
# WinHTTP New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" -Name "DefaultSecureProtocols" -Value 0x00000800
# Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp New-Item -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" -Name "DefaultSecureProtocols" -Value 0x00000800
Aktivieren Sie TLS, indem Sie das folgende Skript ausführen:
# Enable TLS 1.2 New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 0 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 1 New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 0 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 1
Deaktivieren Sie TLS, indem Sie das folgende Skript ausführen:
# Disable TLS 1.1 New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 1 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 0 New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 1 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 0 # Disable TLS 1.0 New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 1 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 0 New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Force | Out-Null Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Va. ue 1 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 0
Überprüfen Sie Die Systemzeit und das Datum. Genaue Systemzeit und -datum sind für die SSL-Zertifikatüberprüfung unerlässlich. Stellen Sie sicher, dass die Systemzeit und das Systemdatum sowohl auf dem Client als auch auf dem Server korrekt sind.
Überprüfen Sie Zertifikate. Stellen Sie sicher, dass das auf dem Server installierte SSL-Zertifikat gültig ist und nicht abgelaufen ist. Überprüfen Sie, ob der Client das Zertifikat des Servers erfolgreich überprüfen kann.
Überprüfen Sie die Firewall- und Proxyeinstellungen. Stellen Sie sicher, dass die erforderlichen Ports geöffnet sind und dass keine Firewall- oder Proxyeinstellungen den SSL-Handshake blockieren.
Führen Sie das Skript als Administrator sowohl auf den Clientcomputern als auch auf den Servercomputern aus.
Starten Sie die Server nach dem Ausführen des Skripts neu.
Nach Abschluss dieser Schritte sollte der Fehler "SSL_PE_NO_CIPHER" behoben werden.
Notiz
Microsoft empfiehlt, die Windows-Registrierung zu sichern.
Siehe auch
Eine vorhandene Verbindung wurde vom Remotehost forcibly geschlossen (Betriebssystemfehler 10054)