Aracılığıyla paylaş


Var olan 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ılı bir şekilde bağlantı kuruldu, ancak sonra oturum açma öncesi el sıkışması sırasında 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 10054 işletim sistemi hatası oluştu. 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 Desteği Sağlayıcısıdır (SSP). Şifreleme aracılığıyla kimlik doğrulaması ve 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 oturum açma öncesi aşamasında SQL Server ve istemci uygulamaları TLS protokolünü kullanarak kimlik bilgilerini iletmek için güvenli bir kanal oluşturur.

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 protokolü 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. TLS 1.2'ye yükseltmeniz ve mümkün olduğunca ö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.

Bağlantı hataları 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 oluşur. Sunucu ve istemci eşleşen bir protokolü (TLS 1.0 veya TLS 1.1 gibi) bulamadığından bu 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 gereklidir.

Çözüm

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

  • SQL Server'ınızı 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 yeniden başlatma girişiminde bulunurken 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+ şifreleme anahtarlarını TLS içinde 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 şifrelemeleri kaldırın. Uygulamalar Windows'ta SQL Server'a bağlanmaya çalıştığında oluşan hatalar hakkında daha fazla bilgi için bkz . Windows'da SQL Server'lara bağlanırken uygulamalar zorla kapatılan TLS bağlantı hataları deneyimi.

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

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

  1. SQL Server Yapılandırma Yöneticisi'da, Konsol bölmesinde SQL Server Ağ Yapılandırması'nı 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ülenirse, 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.
    • Bir sertifika görüntülenmiyorsa, aşağıdakine benzer bir girdi için 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. Başlat>Çalıştır’ı seçip 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’ı genişletin.
    4. SQL Server'ın kullandığı sertifikayı adıyla veya sertifika deposundaki farklı sertifikaların Parmak izi değerini inceleyerek bulun ve Özellikler bölmesini açın.
    5. Genel sekmesinde Sadece aşağıdaki amaçları etkinleştirin öğesini 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 senaryoyla ilgili daha fazla bilgi için bkz. Uygulamalar Windows’da SQL Server bağlantıları kurarken zorla kapatılan TLS bağlantısı hatalarıyla karşılaşıyor.

Not

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

Senaryo 6: IOCP çalışanlarının yetersiz olması nedeniyle TCP Üç Yönlü El SıkışmaSı Zaman Aşımı (SYN Başarısız, TCP Reddetme)

SQL Server 2017 ve önceki sürümlerinde yüksek iş yüklerine sahip sistemlerde TCP üç yönlü el sıkışma hatalarının neden olduğu aralıklı 10054 hatasıyla TCP reddedilmelerine yol açabilir. 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ı nedeniyle olabilir. IOCP çalışanlarının sayısının yetersiz olması ve diğer isteklere hizmet vermekle meşgul olması, bağlantı isteklerinin işlenmesinin gecikmesine neden olur ve sonuçta el sıkışma hataları ve TCP reddedilmesine neden olur. 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ğrulaması 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.