Freigeben über


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:

  1. 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.

  2. Ü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.

  3. Ü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
    
  4. 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
    
  5. 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
    
  6. Ü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.

  7. Ü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.

  8. Ü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.

  9. Führen Sie das Skript als Administrator sowohl auf den Clientcomputern als auch auf den Servercomputern aus.

  10. 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)