Aracılığıyla paylaş


SSL_PE_NO_CIPHER hatası, SQL Server'de uç nokta 5022'de oluşur

Bu makale, uç nokta 5022'de oluşan hatayla SSL_PE_NO_CIPHER ilgili hatayı çözmenize yardımcı olur. Ayrıca farklı .NET Framework sürümlerinde Aktarım Katmanı Güvenliği'nin (TLS) zorunlu tutma betikleri de sağlar.

Belirtiler

Güvenlik Yuvası Katmanı (SSL) "SSL_PE_NO_CIPHER" hatası uç nokta bağlantı noktası 5022'de oluşur ve 15 saniyeden uzun bir gecikme yaşanarak zaman aşımlarına neden olabilir. SSL el sıkışması istemci ile sunucu arasında uyumlu şifreleme paketlerinin olmaması nedeniyle başarısız olduğunda oluşur. Eski veya zayıf şifreleme algoritmaları kullanılırsa bu durum oluşabilir.

Çözüm

Bu hatayı çözmek için şu adımları izleyin:

  1. SSL veya TLS kitaplıklarını güncelleştirin. Hem istemcinin hem de sunucunun güncel SSL veya TLS kitaplıklarının yüklü olduğundan emin olun. Eski sürümler modern ve güvenli şifreleme paketlerini desteklemeyebilir.

  2. Hem istemcide hem de sunucuda Şifreleme Paketi yapılandırmalarını denetleyin. Modern ve güvenli şifreleme paketlerine izin verildiğinden emin olun. Eski veya zayıf şifreleme paketlerini devre dışı bırakmayı göz önünde bulundurun.

  3. SSL veya TLS protokol sürümlerini doğrulayın. hem istemcinin hem de sunucunun aynı SSL veya TLS protokol sürümlerini desteklediğini onaylayın. Eski protokol sürümleri belirli şifreleme paketleriyle uyumlu olmayabilir. Sunucularda TLS 1.2 yoksa, .NET Framework TLS 1.2'yi zorunlu kılmak için aşağıdaki betiği çalıştırın:

    # .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. Aşağıdaki betiği çalıştırarak TLS'yi etkinleştirin:

    # 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. Aşağıdaki betiği çalıştırarak TLS'yi devre dışı bırakın:

    # 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. Sistem saatini ve tarihini denetleyin. SSL sertifika doğrulaması için doğru sistem saati ve tarihi gereklidir. Hem istemcide hem de sunucuda sistem saatinin ve tarihinin doğru olduğunu doğrulayın.

  7. Sertifikaları doğrulayın. Sunucuda yüklü SSL sertifikasının geçerli olduğundan ve süresinin dolmadığından emin olun. İstemcinin sunucunun sertifikasını başarıyla doğrulayabilir olup olmadığını denetleyin.

  8. Güvenlik duvarı ve ara sunucu ayarlarını denetleyin. Gerekli bağlantı noktalarının açık olduğunu ve ssl el sıkışmasını engelleyen bir güvenlik duvarı veya proxy ayarı olmadığını doğrulayın.

  9. Betiği hem istemci hem de sunucu bilgisayarlarında yönetici olarak çalıştırın.

  10. Betiği çalıştırdıktan sonra sunucuları yeniden başlatın.

    Bu adımları tamamladıktan sonra "SSL_PE_NO_CIPHER" hatası çözülmelidir.

Not

Microsoft, Windows kayıt defterini yedeklemenizi önerir.

Ayrıca bkz.

Mevcut bir bağlantı uzak konak tarafından zorla kapatıldı (işletim sistemi hatası 10054)