Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server
Summary
Bu makalede, "Var olan bir bağlantı uzak konak tarafından zorla kapatıldı" SQL Server bağlantı hatasının oluştuğu senaryolar açıklanır ve çözümler sağlanır. Hata, genellikle istemci ve sunucu TLS protokol sürümü (örneğin TLS 1.2 veya TLS 1.3) veya şifre paketi üzerinde anlaşamadığından istemci ile SQL Server arasındaki başarısız bir TLS el sıkışmasına bağlıdır.
Makale aşağıdaki hata iletilerini kapsar:
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 Sockets Hata Kodları: WSAECONNRESET 10054.
Sorun gidermeye başlamadan önce önkoşulları denetleyin ve denetim listesini inceleyin.
Bu hata oluştuğunda
Schannel olarak da bilinen Güvenli Kanal, bir Güvenlik Destek 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. TLS, internet ü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ı kimlik bilgilerini iletmek üzere güvenli bir kanal ayarlamak üzere TLS protokollerini kullanır.
Bir bakışta TLS sürümleri
Aşağıdaki tabloda, bu hatanın sorunlarını giderirken karşılaşabileceğiniz TLS sürümleri karşılaştırılır:
| Version | Windows'da geçerli durum | SQL Server önerisi |
|---|---|---|
| TLS 1.0 / 1.1 | Windows 11, Windows Server 2022 ve sonraki sürümlerde varsayılan olarak devre dışı bırakılır. Güvensiz olarak kabul edilir. | Kullanma. İstemcileri ve sunucuları TLS 1.2 veya sonraki bir sürüme yükseltin. |
| TLS 1.2 | Desteklenen tüm Windows sürümlerinde varsayılan olarak etkindir. SQL Server ve modern istemci sürücüleri tarafından yaygın olarak desteklenir. | Önerilen taban çizgisi. |
| TLS 1.3 | Windows 11 ve Windows Server 2022 ve sonraki sürümlerde desteklenir. SQL Server 2022 ve sonrası, güncel istemci sürücüleriyle desteklenir (örneğin, Microsoft ODBC Driver 18 ve Microsoft.Data.SqlClient 5.x). | hem istemci hem de sunucu tarafından desteklendiği yerde kullanın. |
Windows üzerinde TLS protokollerinin geçerli destek durumu için bkz. TLS/SSL'deki protokoller (Schannel SSP).
Ortamınızda hangi senaryoların geçerli olduğunu belirleme
Aşağıdaki bölümlerde el sıkışmasının başarısız olmasına neden olabilecek farklı senaryolar açıklanmaktadır. Hangisinin ortamınızla eşleştiğinden emin değilseniz, daraltmak için şu başlangıç noktalarını kullanın:
- Başarısızlıkla sonuçlanan bir bağlantı sırasında istemci ve sunucuda ağ izi yakalayın. Ardından, anlaşılan TLS sürümünü ve şifre paketini onaylamak için İstemci Hello ve Sunucu Hello paketlerini inceleyin.
- Hangi sertifikanın kullanımda olduğunu doğrulamak için SQL Server hata günlüğünde
successfully loaded for encryptiongirdisini denetleyin. Parmak izi algoritmasını denetleyin. -
Get-TlsCipherSuiteveHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocolsaltındaki kayıt defteri anahtarlarını kullanarak istemci ve sunucuda etkin TLS sürümlerini ve şifre paketlerini karşılaştırın. - İstemci sürücüsünün TLS 1.2 veya üstünü desteklediğini onaylayın. SQL Server Native Client gibi eski sürücüler kullanımdan kaldırılmıştır ve önerilmemektedir.
İstemci ve 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. Modern Windows sürümlerinde (Windows 11, Windows Server 2022 ve üzeri), TLS 1.0 ve TLS 1.1 varsayılan olarak devre dışı bırakılır. Yöneticiler, eski ortamlarda bu eski protokolleri devre dışı bırakmak için grup ilkesi veya kayıt defteri ayarlarını da sık sık gönderir.
Uygulamanız eski bir Açık Veritabanı Bağlantısı (ODBC) sürücüsü, OLE DB sağlayıcısı, .NET Framework bileşeni veya TLS 1.2 veya sonraki sürümleri desteklemeyen SQL Server sürümü kullandığında bağlantı hataları oluşur. Sunucu ve istemci eşleşen bir protokol bulamadığından bu sorun oluşur. TLS el sıkışmasını tamamlamak için eşleşen bir protokol gereklidir.
İstemci ve sunucu arasındaki protokol uyuşmazlığı düzeltilir
Bu sorunu düzeltmek için aşağıdaki yöntemlerden birini kullanın:
- SQL Server veya istemci sağlayıcılarınızı TLS 1.2'yi (ve mümkün olduğunda TLS 1.3'i) destekleyen bir sürüme yükseltin. Daha fazla bilgi için bkz . Microsoft SQL Server için TLS 1.2 desteği.
- Kısa vadeli bir geçici çözüm olarak sistem yöneticilerinizden hem istemcide hem de sunucuda TLS 1.0 veya TLS 1.1'i geçici olarak etkinleştirmelerini isteyin. Bunu yalnızca bileşenler yükseltilebilir duruma gelene kadar yapın. Aşağıdaki eylemlerden birini kullanın:
- Geçerli TLS ayarlarını denetlemek ve değiştirmek için IIS Şifreleme aracındaki Şifreleme Paketleri sekmesini kullanın.
- Kayıt Defteri Düzenleyicisi'ni başlatın ve
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNELaltındaki Schannel'a özgü kayıt defteri anahtarlarına gidin. Daha fazla bilgi için bkz. TLS 1.2'yeyükselttikten sonra TLS 1.2 Yükseltme İş Akışı ve SSL hataları.
Örnek: TLS 1.2 için en düşük istemci sürücüsü sürümleri
TLS 1.2 veya üstünü yerel olarak destekleyen istemci bileşenlerini kullanın. Aşağıdaki bileşenler ortak güvenli taban çizgileridir:
- Microsoft SQL Server için ODBC Sürücüsü 17 veya 18.
- Microsoft SQL Server için OLE DB Sürücüsü 18 veya 19.
- .NET Framework 4.6.2 veya üzeri ya da desteklenen .NET sürümleri (.NET 6 ve üzeri).
- Microsoft JDBC Sürücüsü 9.4 veya üzeri.
Windows (SQLOLEDB) ile gönderilen eski SQL Server Yerel İstemcisi (SNAC) ve SQL Server OLE DB sağlayıcısı kullanım dışıdır. Bunları önceki listedeki bileşenlerle değiştirin.
Eşleşen TLS protokolleri ama eşleşen şifreleme paketleri yok
Bu senaryo, siz veya yönetici istemci veya sunucudaki belirli algoritmaları ek güvenlik için kısıtladığında oluşur.
İstemci ve sunucu TLS sürümlerini ve şifreleme paketlerini bir ağ izlemesinde İstemci Hello ve Sunucu Hello paketlerinde inceleyebilirsiniz. İstemci Hello paketi tüm istemci şifreleme paketlerini tanıtır ve Sunucu Hello paketi sunucunun seçtiğini döndürür. Eşleşen paket yoksa sunucu, Sunucu Hello paketi göndermek yerine bağlantıyı kapatır.
Şifre paketi uyuşmazlığını düzelt
Sorunu denetlemek için şu adımları izleyin:
Bir ağ izlemesi yoksa, şu kayıt defteri anahtarı altındaki
Functionsdeğerini kontrol edin:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002.Yapılandırılan TLS şifreleme paketlerini listelemek için aşağıdaki PowerShell komutunu kullanın:
Get-ItemPropertyValue -Path 'HKLM:\System\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002\' -Name FunctionsWindows 10, Windows 11, Windows Server 2016 ve sonraki sürümlerde, etkinleştirilmiş paketleri daha okunabilir bir biçimde listelemek için komutunu da çalıştırabilirsiniz
Get-TlsCipherSuite.Eşleşen algoritma olup olmadığını denetlemek için IIS Şifreleme aracındaki Şifreleme Paketleri sekmesini kullanın. Hiçbir eşleşen algoritma bulunamazsa Microsoft Desteği ile iletişime geçin.
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.
Farklı Windows sürümlerinde etkinleştirilen TLS_DHE şifreleme paketleri
bu sorun, istemci ve sunucu farklı Windows sürümlerinde (örneğin, Windows Server 2012 ve Windows Server 2016 veya sonraki sürümlerde) çalıştığında ve her ikisi de şifreleme paketlerini tanıttığında TLS_DHE_* oluşabilir. Bu Windows sürümler TLS içindeki Diffie-Hellman anahtar değişimini farklı şekilde işler ve bu da el sıkışmanın başarısız olmasına neden olabilir.
TLS_DHE şifreleme paketlerini kaldırma
Bu sorunu çözmek için yerel ilkeden ile TLS_DHE_ başlayan tüm şifreleme paketlerini kaldırın. Windows'ta uygulamalar SQL Server’a bağlanmaya çalışırken oluşan hatalar hakkında daha fazla bilgi için bkz: Windows'ta SQL Server’a bağlanırken uygulamalarda TLS bağlantısının zorla kapatılması hataları oluşur.
SQL Server sertifikası zayıf bir karma algoritma kullanıyor
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, el ile sağlanmamış olsa bile bu sertifikayı kullanır. Sertifika MD5, SHA224 veya SHA512 gibi zayıf bir karma (parmak izi) algoritması kullanıyorsa TLS 1.2 ile çalışmaz ve hataya neden olur.
Not
Otomatik olarak imzalanan sertifikalar bu sorundan etkilenmez.
Sertifikaları zayıf karma algoritmalarla değiştirme veya yeniden yapılandırma
Sorunu düzeltmek için şu adımları izleyin:
SQL Server Yapılandırma Yöneticisi'da, Konsol bölmesinde SQL Server Ağ Yapılandırması'nı genişletin.
<örnek adı> için Protokoller'i seçin.
Sertifika sekmesini seçin ve aşağıdaki eylemlerden birini yapın:
Bir sertifika görünürse, parmak izi algoritmasını denetlemek ve zayıf bir karma algoritma kullanıp kullanmadığını onaylamak için Görünüm'ü seçin. Ardından Temizle'yi seçin ve 4. adıma gidin.
Sertifika görünmüyorsa, aşağıdaki gibi 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) "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"] was successfully loaded for encryption
Sertifikadan sunucu kimlik doğrulamasını kaldırın:
- Çalıştırmayı Başlat'ı> seçin ve MMC (Microsoft Yönetim Konsolu) girin.
- MMC'de Sertifikalar ek bileşenini ekleyin ve Bilgisayar hesabı'nı seçin.
- Kişisel>Sertifikalar’ı genişletin.
- SQL Server adıyla veya parmak iziyle kullandığı sertifikayı bulun ve Özellikler bölmesini açın.
- Genel sekmesinde Yalnızca aşağıdaki amaçları etkinleştir'i seçin ve Sunucu Kimlik Doğrulaması'nı temizleyin.
SQL Server hizmetini yeniden başlatın.
TLS_DHE baştaki sıfır düzeltmesi yüklü değil
Bu senaryo, istemci ile sunucu TLS el sıkışması sırasında bir TLS_DHE_* şifreleme paketi üzerinde anlaşmaya vardığında, ancak taraflardan birinde Diffie-Hellman anahtar değişimi için başta yer alan sıfır düzeltmesini içeren Windows güncelleştirmesi bulunmadığında ortaya çıkar. 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 çözmezse , yaygın bağlantı sorunları makalelerinin yardımcı olup olmadığını denetleyin.
IOCP iş parçacığı yetersizliği nedeniyle TCP üç aşamalı el sıkışma zaman aşımı
SQL Server 2017 veya daha önceki sürümleri çalıştıran, iş yükü yüksek sistemlerde, TCP’nin üç yönlü el sıkışma sürecindeki başarısızlıklardan kaynaklanan ve TCP bağlantılarının reddedilmesine yol açan aralıklı 10054 hataları görebilirsiniz. Kök neden genellikle istekleri işlemede TCPAcceptEx gecikmedir. Gecikmeye, gelen bağlantıların kabul edilmesini yöneten Giriş/Çıkış Tamamlama Bağlantı Noktası (IOCP) dinleyici çalışanlarının yetersiz olması neden olabilir. IOCP çalışanları çok az olduğunda veya diğer isteklere hizmet etmekle meşgulse, bağlantı istekleri geç işlenir ve bu da el sıkışma hataları ve TCP reddedilmesiyle sonuçlanır. Ssl el sıkışması sırasında veya kimlik doğrulama denetimleri içeren oturum açma isteklerinin işlenmesi sırasında da oturum açma zaman aşımları görebilirsiniz.
IOCP çalışan yetersizliklerini ve el sıkışma zaman aşımlarını azaltma
IOCP çalışanlarının yetersizliği ve kimlik doğrulama ile şifreleme işlemlerine ayrılan SOS Worker kaynaklarının yetersizliği, bu TCP üç yönlü el sıkışma işlemi zaman aşımlarının ve oturum açma zaman aşımlarının başlıca nedenidir. SQL Server 2019 ve sonraki sürümler bu alanda çeşitli performans geliştirmeleri içerir. Önemli geliştirmelerden biri, oturum açma görevleri için kaynak ayırmayı en iyi duruma getiren ayrılmış oturum açma dağıtıcı havuzudur. Bu değişiklik zaman aşımlarını azaltır ve genel sistem performansını artırır. Bu sorundan etkileniyorsanız, şu anda desteklenen bir SQL Server sürümüne yükseltme planlayın.
Diğer TLS bağlantı hatası senaryoları
Karşılaştığınız hata iletisi önceki senaryolardan hiçbirine karşılık gelmiyorsa aşağıdaki ek senaryolara bakın:
- RSA şifrelemesi kullanıldığında yerel SQL Server bağlı sunucuya bağlanamıyor
- SQL Server yükseltmesi sonrasında 10054 bağlantı hatası oluşabilir
- SQL Server'da Always On ortamına düğüm eklenirken aralıklı bağlantı hataları oluşuyor
- SQLCMD yardımcı programı kullanılırken aralıklı bağlantı hataları oluşuyor
- SSL_PE_NO_CIPHER hatası SQL Server'da uç nokta 5022'de oluşuyor
- SQL Sever Aracısı SSIS hatalarından bağlantı hatası 0x80004005 oluşuyor
- SQL Server makinesinde şifreleme paketi ilkelerini uyguladıktan sonra "İstemci bağlantı kuramıyor" hatası
- Windows Server'ı güncelleştirdikten sonra "Bağlı sunucu bağlantısı başarısız oldu" hatası
- SQL Server Aracısı, SQL Server'a bağlanırken başlatılamıyor
- SQL Server Bağlı Sunucu işlevselliğini kullanarak SQL Server'ın daha yüksek sürümüne bağlanma hatası
İlgili içerik
- SQL Server’daki bağlantı sorunlarını giderme
- Şifreleme ve ağ paketi boyutu kullanmak üzere yapılandırılmış SQL sunucularında SSIS paketleri hatası
- Bağlantı sorunlarını gidermek için önerilen önkoşullar ve denetim listesi
- TLS/SSL'deki protokoller (Schannel SSP)
Üçüncü taraf bilgileri feragatnamesi
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.