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.
Özgün ürün sürümü: SQL Server
Özgün KB numarası: 2007728
Summary
Bu makale, bir istemci SQL Server şifreli (TLS) bağlantısı yaptığında oluşan "Uzak sunucudan alınan sertifika güvenilmeyen bir sertifika yetkilisi tarafından verildi" hatasını çözmenize yardımcı olur. Hata, istemcinin tls el sıkışması sırasında SQL Server örneğinin sunduğu sertifikayı doğrulayamadığı anlamına gelir; bunun nedeni, veren sertifika yetkilisinin (CA) istemcinin Güvenilen Kök Sertifika Yetkilileri deposunda bulunmamış olması veya SQL Server otomatik olarak imzalanan bir sertifika kullanmasıdır.
Sertifika veren CA sertifikasını istemci bilgisayara yükleyerek, doğrulama olmadan sunucu sertifikasına güvenerek ( Sunucu Sertifikasına Güven ayarı) veya istemci veya sunucudaki şifreleme yapılandırmasını değiştirerek hatayı düzeltirsiniz. Birkaç istemci sürücüsünün ve aracının son sürümleri, varsayılanlarını şifreleme gerektirecek şekilde değiştirmiştir, bu nedenle sunucuda hiçbir şey değişmese bile bir sürücü veya araç yükseltmesi sonrasında bu hatayı görebilirsiniz.
Belirtiler
SQL Server bağlandığınızda aşağıdaki hata iletisini alabilirsiniz:
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 - Sertifika zinciri, güvenilir olmayan bir yetkili tarafından verildi.) (.Net SqlClient Veri Sağlayıcısı)
Ayrıca, Windows Sistem olay günlüğüne aşağıdaki hata iletisi kaydedilir:
Log Name: System
Source: Schannel
Date: 10/13/2020 3:03:31 PM
Event ID: 36882
Task Category: None
Level: Error
Keywords:
User: USERNAME
Computer: COMPUTERNAME
Description:
The certificate received from the remote server was issued by an untrusted certificate authority. Because of this, none of the data contained in the certificate can be validated. The TLS connection request has failed. The attached data contains the server certificate.
Neden
İstemcinin doğrulayabildiği bir sertifika kullanarak SQL Server şifreli bir bağlantı yaptığınızda bu hata oluşur. Bu davranış aşağıdaki senaryolarda gerçekleşir:
| Senaryo | Sunucu tarafı şifreleme | İstemci tarafı şifreleme | Sertifika türü | Sertifika veren yetkili, Güvenilen Kök Sertifika Yetkilileri deposunda mevcut |
|---|---|---|---|---|
| 1 | Yes | Hayır | İstemcinin güvenmediği bir kaynaktan sertifika (veren yetkili, istemci bilgisayardaki Güvenilen Kök Sertifika Yetkilileri'nde listelenmez) | Hayır |
| 2 | Hayır | Yes | SQL Server tarafından oluşturulan otomatik olarak imzalanan sertifika | No. Kendinden imzalı sertifikalar bu sertifika deposunda görünmez. |
İstemci SQL Server şifreli bir bağlantı kurduğunda, Güvenli Kanal (Schannel), yerel bilgisayardaki Güvenilen Kök Sertifika Yetkilileri deposunda arama yaparak güvenilen sertifika yetkilileri listesini oluşturur. TLS el sıkışması sırasında sunucu, ortak anahtar sertifikasını istemciye gönderir. Ortak anahtar sertifikası veren, sertifika yetkilisi (CA) olarak bilinir. İstemcinin CA'ya güvendiğini onaylaması gerekir. Bunu, güvenilir CA'ların ortak anahtarlarını önceden bilerek yapar. Schannel, önceki iki senaryoda olduğu gibi güvenilmeyen bir sertifika yetkilisinin verdiği bir sertifikayı algıladığında , Belirtiler bölümünde listelenen hata iletisini alırsınız.
Uygun bir sertifika yapılandırılmaz veya algılanmazsa, Database Engine başlatma sırasında otomatik olarak imzalanan bir geri dönüş sertifikası oluşturur. Oturum açma kimlik bilgilerini şifrelemek ve sunucu tarafı veya istemci tarafı şifreleme etkinleştirildiğinde bağlantının tamamını şifrelemek için bu sertifikayı kullanır. Hiçbir istemci otomatik olarak imzalanan bir sertifikaya varsayılan olarak güvenmez; bu nedenle, istemci ve sunucu aynı bilgisayarda çalıştırıldığında bile varsayılan SQL Server yüklemesinde bu hata oluşabilir. Daha fazla bilgi için bkz . Oturum açma paketi şifrelemesi ile veri paketi şifrelemesi karşılaştırması.
Sürücü veya araç yükseltmesi sonrasında bu hatanın neden göründüğü
Aşağıdaki tabloda yer alan istemci sürücüsü ve araç sürümleri, varsayılan değerlerini şifreleme gerektirecek şekilde değiştirmiştir. Bu sürümlerden birine yükseltildikten sonra istemci bağlantıyı şifreler ve sunucu yapılandırması değişmese bile sunucu sertifikasını doğrular. Önceki sürümler varsayılan olarak şifreleme gerektirmediğinden, açıkça şifreleme isteğinde bulunmadığınız sürece sertifika doğrulanmamıştır.
| İstemci sürücüsü veya aracı | Version | Varsayılan şifreleme davranışı |
|---|---|---|
SQL Server için Microsoft OLE DB Sürücüsü (MSOLEDBSQL19) |
19 ve sonraki sürümler |
Encrypt varsayılan değer: Mandatory |
| SQL Server için Microsoft ODBC Sürücüsü | 18 ve sonraki sürümler |
Encrypt varsayılan değer: Mandatory |
Microsoft.Data.SqlClient |
4.0 ve sonraki sürümler |
Encrypt varsayılan değer: True |
| SQL Server Management Studio (SSMS) | 20 ve üzeri sürümler | Şifreleme varsayılan olarak Zorunlu'dur |
Bir uygulamayı Yerel İstemci 11.0'dan (SNAC) SQL Server Microsoft OLE DB Sürücüsü 19 veya Microsoft ODBC Sürücüsü 18'e geçirdikten hemen sonra bu hatayı görürseniz, bkz. Sürücü yükseltmesinden sonra sertifika zinciri güvenilir değil.
SNAC, SQL Server 2022 (16.x) ve sonraki sürümlerle ya da SSMS 19 ve sonraki sürümlerle birlikte gönderilmez ve yeni geliştirme için önerilmez. Microsoft OLE DB Driver for SQL Server, SQL Server için Microsoft ODBC Sürücüsünü veya Microsoft.Data.SqlClient bunun yerine kullanın. Daha fazla bilgi için bkz. SQL Server Native Client için destek ilkeleri.
Çözüm
SQL Server bağlantılarını şifrelemek için kasıtlı olarak güvenilmeyen bir yetkiliden bir sertifika veya otomatik olarak imzalanan bir sertifika kullanıyorsanız, aşağıdaki seçeneklerden birini kullanın:
- Sertifika doğrulamayı korumak ve güven sorununu kalıcı olarak düzeltmek için Seçenek 1: sertifika yetkilisini istemci bilgisayara yükleyin.
- Sertifika yüklemeden hemen bağlanmak için Seçenek 2: Doğrulamadan sunucu sertifikasına güven seçeneğini kullanın. Bu seçenek en hızlı düzeltmedir ve SQL Server varsayılan otomatik olarak imzalanan sertifikasını kullandığında çoğu kullanıcının ihtiyaç duyduğu seçenektir.
- Şifreleme gereksinimini durdurmak veya sertifikayı güvenilen bir yetkiliden gelen sertifikayla değiştirmek için 3. Seçenek: Şifreleme yapılandırmasını değiştirme seçeneğini kullanın.
1. Seçenek: İstemci bilgisayara sertifika yetkilisini yükleme
1. senaryo için, şifrelenmiş bağlantıyı başlatan istemci bilgisayardaki Güvenilen Kök Sertifika Yetkilileri deposuna sertifika yetkilisini ekleyin. Bunu yapmak için 1. Adım: Sunucu sertifikasını bir dosyaya aktarın ve 2. Adım: Kök sertifika yetkilisini (CA) bu sırada istemci bilgisayar yordamlarına yükleyin.
1. Adım: Sunucu sertifikasını bir dosyaya aktarma
SQL Server bilgisayarda, SQL Server kullandığı sertifikayı bir dosyaya aktarın. Aşağıdaki adımlarda örnek dosya adı olarak caCert.cer kullanılır. Bu dosya, bu işlemde oluşturulana kadar mevcut değildir. Adı ve konumu seçersiniz.
Başlat'ı seçin, mmc yazın ve Microsoft Yönetim Konsolu açın.
Dosya>Snap-in Ekle/Kaldır'ı seçin.
Kullanılabilir ek bileşenler listesindeSertifikalar'ı ve ardından Ekle'yi seçin.
Bilgisayar hesabı'nı seçin, İleri'yi seçin, Yerel bilgisayar: (bu konsolun çalıştığı bilgisayar) öğesini ve ardından Son'u seçin.
Not
SQL Server sertifikaları Yerel Bilgisayar\Kişisel sertifika deposuna yüklenir. Kullanıcı hesabım'ı seçerseniz MMC farklı bir sertifika deposu açar ve SQL Server sertifikası görünmez.
Ek Bileşen Ekle veya Kaldır iletişim kutusunu kapatmak için Tamam'ı seçin.
Sol bölmede Sertifikalar (Yerel Bilgisayar) öğesini genişletin, Kişisel'i genişletin ve ardından Sertifikalar'ı seçin.
SQL Server tarafından kullanılan sertifikaya sağ tıklayın ve ardından Tüm Görevler>Dışa Aktar seçeneğini belirleyin.
Tavsiye
SQL Server kullandığı sertifikayı tanımlamak için SQL Server Yapılandırma Yöneticisi açın, Ağ Yapılandırması SQL Server genişletin, örnek adı> için <Protokoller'e sağ tıklayın, Özellikler'i seçin ve ardından Sertifika sekmesini seçin. SQL Server hata günlüğü "Şifreleme için otomatik olarak oluşturulan bir sertifika başarıyla yüklendi" girdisini içeriyorsa, SQL Server oluşturulan bir geri dönüş sertifikası kullanır. Bu sertifikayı dışarı aktaramazsınız, bu nedenle bunun yerine Seçenek 2 veya Seçenek 3'i kullanın.
Sertifika Dışarı Aktarma Sihirbazı'nınHoş Geldiniz sayfasından geçmek için İleri'yi seçin.
Hayır, özel anahtarı dışarı aktarmayın seçeneğinin seçili olduğunu doğrulayın ve ardından İleri'yi seçin.
DER kodlu ikili X.509 (.CER) veya Base-64 kodlu X.509 (.CER) seçeneklerinden birinin seçili olduğundan emin olun ve ardından İleri seçeneğini belirleyin.
caCert.cer gibi bir dışarı aktarma dosyası adı girin.
sertifikayı dışarı aktarmak için İleri'yi ve ardından Son'u seçin.
Dışarı aktarılan .cer dosyasını istemci bilgisayara kopyalayın.
2. Adım: İstemci bilgisayara kök sertifika yetkilisini (CA) yükleme
İstemci bilgisayarda MMC'yi açın, Dosya>Ek Bileşeni Ekle/Kaldır'ı seçin, Kullanılabilir ek bileşenler listesinde Sertifikalar'ı ve ardından Ekle'yi seçin.
Sertifikalar ek bileşeni iletişim kutusunda Bilgisayar hesabı'nı seçin ve ardından İleri'yi seçin.
Bilgisayar Seç bölmesinde Yerel bilgisayar: (bu konsolun üzerinde çalıştığı bilgisayar) öğesini ve ardından Son'u seçin.
Ek Bileşen Ekle veya Kaldır iletişim kutusunu kapatmak için Tamam'ı seçin.
MMC'nin sol bölmesinde Sertifikalar (Yerel Bilgisayar) düğümünü genişletin.
Güvenilen Kök Sertifika Yetkilileri düğümünü genişletin, Sertifikalar alt klasörüne sağ tıklayın, Tüm Görevler seçeneğini ve ardından İçe Aktar seçeneğini seçin.
Sertifika İçeri Aktarma Sihirbazı'nınHoş Geldiniz sayfasında İleri'yi seçin.
İçe Aktarılacak Dosya sayfasında Gözat'ı seçin.
caCert.cer sertifika dosyasının konumuna göz atın, dosyayı seçin ve ardından Aç'ı seçin.
İçeri Aktaracak Dosya sayfasında İleri'yi seçin.
Sertifika Deposu sayfasında varsayılan seçimi kabul edin ve İleri'yi seçin.
Sertifika İçe Aktarma Sihirbazını Tamamlama sayfasında Bitir'i seçin.
Seçenek 2: Doğrulamadan sunucu sertifikasına güvenme
1. ve 2. senaryolar için istemci uygulamanızda Sunucu Sertifikasına Güven ayarını yapın. Bu ayar bağlantıyı şifreli tutar ancak sertifika doğrulamayı atlar. Anahtar sözcük adı ve kabul edilen değerler istemci kitaplığına bağlıdır:
| Müşteri kütüphanesi | Bağlantı dizesi anahtar sözcüğü |
|---|---|
Microsoft.Data.SqlClient |
TrustServerCertificate=True |
| SQL Server için Microsoft ODBC Sürücüsü | TrustServerCertificate=yes |
| Microsoft OLE DB Driver for SQL Server (sağlayıcı dizesi) | TrustServerCertificate=yes |
SQL Server için Microsoft OLE DB Sürücüsü (ADO veya IDataInitialize) |
Trust Server Certificate=true |
| SQL Server için Microsoft JDBC Sürücüsü | trustServerCertificate=true |
SQL Server Management Studio (SSMS) 20 veya sonraki bir sürümü kullanarak bağlanırsanız Sunucuya Bağlan iletişim kutusunun Oturum Açma sayfasında Sunucu sertifikasına güven onay kutusunu seçin. SSMS'nin önceki sürümlerinde Sunucuya Bağlan penceresinde Seçenekler'i seçin, Bağlantı Özellikleri sekmesini ve ardından Sunucu sertifikasına güven'i seçin.
İstemci kitaplığınız için bu ayarı yapılandırma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
- Microsoft'ta şifreleme ve sertifika doğrulaması. Data.SqlClient
- OLE DB Driver for SQL Server içindeki şifreleme ve sertifika doğrulaması
- SQL Server için ODBC Sürücüsü için DSN ve bağlantı dizesi anahtar sözcükleri ve öznitelikleri
- SQL Server için Microsoft JDBC Sürücüsünü kullanarak şifreleme ile bağlanma
- SQL Server Yerel İstemcisinde (eski istemci) doğrulama olmadan şifreleme kullanma
Not
Güven Sunucusu Sertifikası ayarı şifrelemeyi devre dışı bırakmaz. Bağlantı şifreli kalır, ancak istemci sunucunun kimliğini doğrulamaz.
Caution
Otomatik olarak imzalanan sertifika kullanan şifrelenmiş bağlantılar güçlü güvenlik sağlamaz. Ortadaki adam saldırılarına karşı hassaslar. Üretim ortamında veya İnternet'e bağlı sunucularda otomatik olarak imzalanan sertifikalara sahip TLS'ye güvenmeyin.
Seçenek 3: Şifreleme yapılandırmasını değiştirme
Önceki bölümlerde açıklanan yapılandırma istenmeyen bir yapılandırmaysa, bu sorunu çözmek için aşağıdaki seçeneklerden birini kullanın:
Database Engine güvenilen bir yetkiliden sertifika kullanacak şekilde yapılandırın. İstemciler ek yapılandırma olmadan sertifikayı doğruladığı için bu seçenek en güvenli uzun vadeli düzeltmedir. Daha fazla bilgi için bkz. Database Engine şifreli bağlantıları etkinleştirme ve SQL Server için Sertifika gereksinimleri.
Şifreleme gerekli değilse:
İstemci uygulamanızda şifrelemeyi kapatın. OLE DB sağlayıcı dizesi için
Use Encryption for Data=Optional, OLE DB ADO veyaEncrypt=noiçinIDataInitialize, ODBC içinEncrypt=FalseveEncrypt=Optionalya da Microsoft JDBC Sürücüsü içinMicrosoft.Data.SqlClientayarlayın. SSMS 20 ve sonraki sürümlerde, Sunucuya Bağlan iletişim kutusunun Oturum Açma sayfasında Şifreleme'yiİsteğe Bağlı olarak ayarlayın.SQL Server Yapılandırma Yöneticisi kullanarak sunucu tarafı şifrelemeyi kapatın. SQL Server Ağ Yapılandırması'nı genişletin, >örnek adı< için Protokoller'e sağ tıklayın, Özellikler'i seçin, Bayraklar sekmesini seçin, Şifrelemeyi Zorla değerini Hayır olarak ayarlayın ve ardından SQL Server hizmetini yeniden başlatın. Daha fazla bilgi için bkz. MSSQLSERVER Özellikleri protokolleri (Bayraklar sekmesi).
Warning
Şifrelemeyi kapatırsanız, kimlik bilgileri ve veriler korumasız ağ üzerinden hareket eder. Yalnızca güvenilen, yalıtılmış ağlarda şifrelemeyi kapatın.