Aracılığıyla paylaş


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

Şunlar için geçerlidir: SQL Server

Not

Sorun gidermeye başlamadan önce önkoşulları denetlemenizi ve denetim listesini gözden geçirmenizi öneririz.

Bu makalede çeşitli senaryolar ayrıntılı olarak anlatılarak aşağıdaki hatalara yönelik çözümler sağlanır:

  • Sunucuyla başarıyla bağlantı kuruldu ancak oturum açma işlemi sırasında bir hata oluştu. (sağlayıcı: SSL Sağlayıcısı, hata: 0 - Var olan bir bağlantı uzak konak tarafından zorla kapatıldı.)

  • Sunucuyla başarıyla bağlantı kuruldu, ancak oturum açma öncesi el sıkışması sırasında bir hata oluştu. (sağlayıcı: TCP Sağlayıcısı, hata: 0 - Var olan bir bağlantı uzak konak tarafından zorla kapatıldı.)

windows yuva katmanında işletim sistemi hatası 10054 tetikleniyor. Daha fazla bilgi için bkz . Windows Yuvaları Hata Kodları: WSAECONNRESET 10054.

Hatayı ne zaman görüyorsunuz?

Schannel olarak da bilinen Güvenli Kanal, bir Güvenlik Destek Sağlayıcısıdır (SSP). Kimlik doğrulaması ve şifreleme yoluyla güvenli özel iletişim sağlayan bir dizi güvenlik protokolü içerir. Schannel SSP'nin bir işlevi , Aktarım Katmanı Güvenliği (TLS) protokolünün farklı sürümlerini uygulamaktır. Bu protokol, İnternet üzerinden iletişim kuran bilgilerin gizliliğini korumak için tasarlanmış bir endüstri standardıdır.

TLS El Sıkışma Protokolü, TCP üzerinden iletişim kuran iki uygulama arasında güvenli oturumlar oluşturmak veya sürdürmek için gereken anahtar değişiminden sorumludur. Bağlantı işleminin ön oturum açma aşamasında, SQL Server ve istemci uygulamaları kimlik bilgilerini iletmek için güvenli bir kanal oluşturmak için TLS protokollerini kullanır.

Aşağıdaki senaryolarda el sıkışması tamamlanamazsa oluşan hatalar ayrıntılı olarak anlatılacaktır:

Senaryo 1: İstemci ile sunucu arasında eşleşen TLS protokolleri yok

Güvenli Yuva Katmanı (SSL) ve TLS 1.2'den önceki TLS sürümlerinin bilinen çeşitli güvenlik açıkları vardır. Mümkün olduğunda TLS 1.2'ye yükseltmeniz ve önceki sürümleri devre dışı bırakmanız önerilir. Buna göre sistem yöneticileri, ortamınızdaki çeşitli bilgisayarlarda bu güvenli olmayan TLS sürümlerini devre dışı bırakmak için grup ilkesi veya diğer mekanizmalar aracılığıyla güncelleştirmeleri gönderebilir.

Uygulamanız Açık Veritabanı Bağlantısı (ODBC) sürücüsünün önceki bir sürümünü, OLE DB sağlayıcısını, .NET framework bileşenlerini veya TLS 1.2'yi desteklemeyen bir SQL Server sürümünü kullandığında bağlantı hataları oluşur. Sunucu ve istemci eşleşen bir protokolü (TLS 1.0 veya TLS 1.1 gibi) bulamadığından sorun oluşur. Bağlantıyla devam etmek için gereken TLS el sıkışmasını tamamlamak için eşleşen bir protokol gerekir.

Çözüm

Bu sorunu gidermek için aşağıdaki yöntemlerden birini kullanın:

  • SQL Server veya istemci sağlayıcılarınızı TLS 1.2'yi destekleyen bir sürüme yükseltin. Daha fazla bilgi için bkz. Microsoft SQL Server için TLS 1.2 desteği.
  • Sistem yöneticilerinizden, aşağıdaki eylemlerden birini gerçekleştirerek hem istemci hem de sunucu bilgisayarlarda TLS 1.0 veya TLS 1.1'i geçici olarak etkinleştirmelerini isteyin:

Senaryo 2: İstemcide ve sunucuda EŞLEŞEN TLS protokolleri, ancak eşleşen TLS şifreleme paketleri yok

Bu senaryo, siz veya yöneticiniz istemcideki veya sunucudaki belirli algoritmaları ek güvenlik için kısıtladığında oluşur.

İstemci ve sunucu TLS sürümleri, şifre paketleri bir ağ izlemesinde İstemci Hello ve Sunucu Hello paketlerinde kolayca incelenebilir. İstemci Hello paketi tüm istemci şifreleme paketlerini tanıtırken, Sunucu Hello paketi bunlardan birini belirtir. Eşleşen paket yoksa sunucu, Sunucu Hello paketine yanıt vermek yerine bağlantıyı kapatır.

Çözüm

Sorunu denetlemek için şu adımları izleyin:

  1. Bir ağ izlemesi kullanılamıyorsa, bu kayıt defteri anahtarının altındaki işlev değerini denetleyin: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002

    TLS işlevlerini bulmak için aşağıdaki PowerShell komutunu kullanın.

    Get-ItemPropertyValue  -Path HKLM:\System\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002\ -Name Functions
    
  2. Eşleşen algoritma olup olmadığını denetlemek için IIS Şifreleme aracındaki Şifreleme Paketleri sekmesini kullanın. Eşleşen algoritma bulunmazsa Microsoft Desteği başvurun.

Daha fazla bilgi için bkz. TLS 1.2 Yükseltme İş Akışı ve Aktarım Katmanı Güvenliği (TLS) bağlantıları bağlanırken veya devam ederken başarısız olabilir veya zaman aşımına uğrayabilir.

Senaryo 3: TLS_DHE Şifrelemeleri etkinleştirilebilir

bu sorun, istemci veya sunucu Windows 2012, 2016 ve üzeri sürümlerde barındırıldığında oluşur. Aynı şifrelemeye (TLS_DHE*) sahip her iki işletim sistemi sürümüne rağmen Windows 2012 ve 2016+ TLS içindeki şifreleme anahtarlarını farklı şekilde işler. Bu, iletişim hatalarıyla sonuçlanabilir.

Çözüm

Bu sorunu çözmek için yerel ilkeden "TLS_DHE*" ile başlayan tüm şifreleri kaldırın. Uygulamalar Windows'da SQL Server bağlanmaya çalıştığında oluşan hatalar hakkında daha fazla bilgi için bkz. Windows'ta SQL Server'ları bağlarken uygulamalar zorla kapatılan TLS bağlantı hataları yaşar.

Senaryo 4: SQL Server MD5, SHA224 veya SHA512 gibi zayıf karma algoritması tarafından imzalanan bir sertifika kullanır

SQL Server her zaman oturum açmayla ilgili ağ paketlerini şifreler. Bu amaçla, el ile sağlanan bir sertifika veya otomatik olarak imzalanan bir sertifika kullanır. SQL Server sertifika deposunda sunucu kimlik doğrulama işlevini destekleyen bir sertifika bulursa, sertifikayı kullanır. SQL Server, el ile sağlanmamış olsa bile bu sertifikayı kullanır. Bu sertifikalar MD5, SHA224 veya SHA512 gibi zayıf karma algoritma (parmak izi algoritması) kullanıyorsa TLS 1.2 ile çalışmaz ve daha önce bahsedilen hataya neden olur.

Not

Otomatik olarak imzalanan sertifikalar bu sorundan etkilenmez.

Çözüm

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

  1. SQL Server Yapılandırma Yöneticisi'daKonsol bölmesinde ağ yapılandırması SQL Server genişletin.
  2. Örnek adı> için Protokoller'i <seçin.
  3. Sertifika sekmesini seçin ve ilgili adımı izleyin:
    • Bir sertifika görüntüleniyorsa, Zayıf karma algoritması kullanıp kullanmadığını onaylamak üzere Parmak izi algoritmasını incelemek için Görünüm'ü seçin. Ardından Temizle'yi seçin ve 4. adıma gidin.
    • Sertifika görüntülenmiyorsa, aşağıdakine benzer bir girdinin SQL Server hata günlüğünü gözden geçirin ve karma veya parmak izi değerini not edin:
      2017-05-30 14:59:30.89 spid15s The certificate [Cert Hash(sha1) "B3029394BB92AA8EDA0B8E37BAD09345B4992E3D"] was successfully loaded for encryption
  4. Sunucu kimlik doğrulamasını kaldırmak için aşağıdaki adımları kullanın:
    1. ÇalıştırmayıBaşlat'ı> seçin ve MMC yazın. (MMC, Microsoft Yönetim Konsolu olarak da bilinir.)
    2. MMC'de sertifikaları açın ve Sertifikalar ek bileşeni ekranında Bilgisayar Hesabı'nı seçin.
    3. Kişisel>Sertifikalar'a genişletin.
    4. SQL Server kullandığı sertifikayı adıyla veya sertifika deposundaki farklı sertifikaların Parmak İzi değerini inceleyerek bulun ve Özellikler bölmesini açın.
    5. Genel sekmesinde Yalnızca aşağıdaki amaçları etkinleştir'i seçin ve Sunucu Kimlik Doğrulaması'nın seçimini kaldırın.
  5. SQL Server hizmetini yeniden başlatın.

Senaryo 5: İstemci ve sunucu TLS el sıkışması için TLS_DHE şifreleme paketi kullanıyor, ancak sistemlerden birinde yüklü TLS_DHE için önde gelen sıfır düzeltme yok

Bu senaryo hakkında daha fazla bilgi için bkz. Windows'ta SQL Server'ları bağlarken uygulamalar zorla kapatılan TLS bağlantı hataları deneyimi.

Not

Bu makale sorununuzu çözmediyse yaygın bağlantı sorunları makalelerinin yardımcı olup olmadığını de kontrol edebilirsiniz.

Senaryo 6: IOCP çalışanlarının yetersiz olmasından dolayı TCP Three-Way El Sıkışması Zaman Aşımı (SYN Başarısız, TCP Reddi)

SQL Server 2017 ve önceki sürümlerinde yüksek iş yüklerine sahip sistemlerde, TCP üç yönlü el sıkışması hatalarının neden olduğu aralıklı 10054 hatasını gözlemleyerek TCP reddine neden olabilirsiniz. Bu sorunun kök nedeni, isteklerin işlenmesindeki TCPAcceptEx gecikme olabilir. Bu gecikme, gelen bağlantıların kabul edilmesini yönetmekle sorumlu olan IOCP (Giriş/Çıkış Tamamlama Bağlantı Noktası) dinleyici çalışanlarının yetersiz olmasından kaynaklanabilir. IoCP çalışanlarının yetersiz olması ve diğer isteklere hizmet vermekle meşgul olması, bağlantı isteklerinin işlenmesinin gecikmesine yol açar ve sonuçta el sıkışması hataları ve TCP reddiyle sonuçlanır. Başlangıç SSL el sıkışması (varsa) veya kimlik doğrulama denetimlerini içeren oturum açma isteklerinin işlenmesi sırasında oturum açma zaman aşımlarını da gözlemleyebilirsiniz.

Çözüm

KIMLIK doğrulama ve şifreleme işlemlerini işlemek için ayrılan IOCP çalışanlarının ve SOS Çalışanı kaynaklarının yetersiz olması, TCP üç yönlü el sıkışması zaman aşımlarının ve ek oturum açma zaman aşımlarının ana nedenidir. SQL Server 2019 bu alanda çeşitli performans geliştirmeleri içerir. Önemli geliştirmelerden biri, ayrılmış oturum açma dağıtıcı havuzunun uygulanmasıdır. Bu, oturum açmayla ilgili görevler için kaynakların ayrılmasını iyileştirerek zaman aşımlarının oluşmasını azaltır ve genel sistem performansını geliştirir.

TLS bağlantılarının başarısız olduğu diğer senaryolar

Karşılaştığınız hata iletisi önceki senaryolardan hiçbirine karşılık gelmiyorsa aşağıdaki ek senaryolara bakın:

Ayrıca bkz.

Üçüncü taraf bilgileri hakkında yasal uyarı

Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.