Aracılığıyla paylaş


SSL_PE_NO_CIPHER hatası SQL Server'da uç nokta 5022'de oluşuyor

Bu makale, uç nokta 5022'de oluşan ile ilgili SSL_PE_NO_CIPHER hatayı çözmenize yardımcı olur. Ayrıca, .NET Framework'ün farklı sürümlerinde Aktarım Katmanı Güvenliği'nin (TLS) zorunlu hale getirilmesine yönelik betikler 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. İstemci ile sunucu arasındaki uyumlu şifreleme paketlerinin olmaması nedeniyle SSL el sıkışması 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ı gidermek için şu adımları izleyin:

  1. SSL veya TLS kitaplıklarını güncelleştirin. hem istemci 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 üzerinde 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 mi denetleyin.

  8. Güvenlik duvarı ve ara sunucu ayarlarını denetleyin. Gerekli bağlantı noktalarının açık olduğunu ve hiçbir güvenlik duvarı veya ara sunucu ayarının SSL el sıkışmasını engellemediğini 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 tamamlandıktan sonra "SSL_PE_NO_CIPHER" hatası çözülmelidir.

Not

Microsoft, Windows kayıt defterini yedeklemenizi önerir.

Ayrıca bkz.

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