Błąd SSL_PE_NO_CIPHER występuje w punkcie końcowym 5022 w SQL Server
Ten artykuł ułatwia rozwiązanie błędu związanego SSL_PE_NO_CIPHER
z wystąpieniem w punkcie końcowym 5022. Udostępnia również skrypty wymuszania zabezpieczeń warstwy transportu (TLS) w różnych wersjach .NET Framework.
Symptomy
Błąd "SSL_PE_NO_CIPHER" warstwy gniazda zabezpieczeń (SSL) występuje na porcie punktu końcowego 5022 i występuje opóźnienie czasowe dłuższe niż 15 sekund, co może prowadzić do przekroczenia limitu czasu. Dzieje się tak, gdy uzgadnianie protokołu SSL kończy się niepowodzeniem z powodu braku zgodnych zestawów szyfrowania między klientem a serwerem. Może się tak zdarzyć, jeśli używane są nieaktualne lub słabe algorytmy szyfrowania.
Rozwiązanie
Aby rozwiązać ten błąd, wykonaj następujące kroki:
Aktualizowanie bibliotek SSL lub TLS. Upewnij się, że zarówno klient, jak i serwer mają zainstalowane aktualne biblioteki SSL lub TLS. Nieaktualne wersje mogą nie obsługiwać nowoczesnych i bezpiecznych zestawów szyfrowania.
Sprawdź konfiguracje pakietu szyfrowania zarówno na kliencie, jak i na serwerze. Upewnij się, że nowoczesne i bezpieczne zestawy szyfrowania są dozwolone. Rozważ wyłączenie nieaktualnych lub słabych zestawów szyfrowania.
Sprawdź wersje protokołu SSL lub TLS. Upewnij się, że zarówno klient, jak i serwer obsługują te same wersje protokołu SSL lub TLS. Nieaktualne wersje protokołów mogą nie być zgodne z niektórymi zestawami szyfrowania. Jeśli protokół TLS 1.2 nie jest obecny na serwerach, uruchom następujący skrypt, aby wymusić protokół TLS 1.2 na .NET Framework:
# .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
Włącz protokół TLS, uruchamiając następujący skrypt:
# 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
Wyłącz protokół TLS, uruchamiając następujący skrypt:
# 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
Sprawdź systemową godzinę i datę. Dokładna godzina i data systemu są niezbędne do weryfikacji certyfikatu SSL. Sprawdź, czy systemowa godzina i data są poprawne zarówno na kliencie, jak i na serwerze.
Sprawdź certyfikaty. Upewnij się, że certyfikat SSL zainstalowany na serwerze jest prawidłowy i nie wygasł. Sprawdź, czy klient może pomyślnie zweryfikować certyfikat serwera.
Sprawdź ustawienia zapory i serwera proxy. Sprawdź, czy wymagane porty są otwarte i czy żadne ustawienia zapory ani serwera proxy nie blokują uzgadniania protokołu SSL.
Uruchom skrypt jako administrator na komputerach klienckich i serwerach.
Uruchom ponownie serwery po uruchomieniu skryptu.
Po wykonaniu tych kroków należy usunąć błąd "SSL_PE_NO_CIPHER".
Uwaga
Firma Microsoft zaleca utworzenie kopii zapasowej rejestru systemu Windows.
Zobacz też
Istniejące połączenie zostało wymuszone przez hosta zdalnego (błąd systemu operacyjnego 10054)
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla