Ошибка SSL_PE_NO_CIPHER возникает в конечной точке 5022 в SQL Server

Эта статья поможет устранить ошибку, связанную с , которая возникает в конечной SSL_PE_NO_CIPHER точке 5022. Он также предоставляет скрипты для применения протокола TLS в разных версиях платформа .NET Framework.

Симптомы

Ошибка SSL "SSL_PE_NO_CIPHER" возникает на порту конечной точки 5022, и задержка по времени превышает 15 секунд, что может привести к превышению времени ожидания. Это происходит при сбое подтверждения SSL из-за отсутствия совместимых наборов шифров между клиентом и сервером. Это может произойти, если используются устаревшие или слабые алгоритмы шифрования.

Решение

Чтобы устранить эту ошибку, выполните следующие действия.

  1. Обновление библиотек SSL или TLS. Убедитесь, что на клиенте и сервере установлены актуальные библиотеки SSL или TLS. Устаревшие версии могут не поддерживать современные и безопасные наборы шифров.

  2. Проверьте конфигурации Cipher Suite как на клиенте, так и на сервере. Убедитесь, что разрешены современные и безопасные наборы шифров. Рассмотрите возможность отключения устаревших или слабых наборов шифров.

  3. Проверьте версии протокола SSL или TLS. Убедитесь, что клиент и сервер поддерживают одну и ту же версию протокола SSL или TLS. Устаревшие версии протокола могут быть несовместимы с определенными наборами шифров. Если tls 1.2 отсутствует на серверах, выполните следующий скрипт, чтобы применить TLS 1.2 на платформа .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
    
  4. Включите ПРОТОКОЛ TLS, выполнив следующий скрипт:

    # 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. Отключите TLS, выполнив следующий скрипт:

    # 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. Проверьте системное время и дату. Точное системное время и дата имеют важное значение для проверки SSL-сертификата. Убедитесь, что системное время и дата указаны правильно как на клиенте, так и на сервере.

  7. Проверка сертификатов. Убедитесь, что SSL-сертификат, установленный на сервере, действителен и не истек срок действия. Проверьте, может ли клиент успешно проверить сертификат сервера.

  8. Проверьте параметры брандмауэра и прокси-сервера. Убедитесь, что необходимые порты открыты и что параметры брандмауэра или прокси-сервера не блокируют подтверждение SSL.

  9. Запустите скрипт от имени администратора как на клиентском, так и на серверном компьютерах.

  10. Перезагрузите серверы после выполнения скрипта.

    После выполнения этих действий необходимо устранить ошибку "SSL_PE_NO_CIPHER".

Примечание.

Корпорация Майкрософт рекомендует создать резервную копию реестра Windows.

См. также

Существующее подключение было принудительно закрыто удаленным узлом (ошибка ОС 10054)