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.
JDBC sürücüsünü indirin
SQL Server'a bağlanırken, uygulama şifreleme isterse ve SQL Server örneği TLS şifrelemesini destekleyecek şekilde yapılandırılmışsa, SQL Server için Microsoft JDBC Sürücüsü TLS el sıkışmasını başlatır. El sıkışma, sunucu ve istemcinin verileri korumak için kullanılacak şifreleme ve şifreleme algoritmaları konusunda anlaşma yapmasına olanak tanır. TLS el sıkışması tamamlandıktan sonra istemci ve sunucu şifrelenmiş verileri güvenli bir şekilde gönderebilir. 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. İstemci, sertifika yetkilisinin istemcinin güvendiği bir sertifika yetkilisi olduğunu doğrulamakla sorumludur.
Uygulama şifreleme istemezse, SQL Server için Microsoft JDBC Sürücüsü SQL Server'ı TLS şifrelemesini desteklemeye zorlamaz. SQL Server örneği TLS şifrelemesini zorlamak için yapılandırılmamışsa, şifreleme olmadan bir bağlantı kurulur. SQL Server örneği TLS şifrelemesini zorlayacak şekilde yapılandırılmışsa, sürücü düzgün yapılandırılmış Java Sanal Makinesinde (JVM) çalışırken TLS şifrelemesini otomatik olarak etkinleştirir veya aksi takdirde bağlantı sonlandırılır ve sürücü bir hataya neden olur.
Uyarı
BIR TLS bağlantısının başarılı olması için serverName'e geçirilen değerin sunucu sertifikasındaki Konu Diğer Adı'ndaki (SAN) Ortak Ad (CN) veya DNS adıyla tam olarak eşleştiğinden emin olun.
SQL Server için TLS'yi yapılandırma hakkında daha fazla bilgi için bkz. Veritabanı Altyapısına şifreli bağlantıları etkinleştirme.
Açıklamalar
Uygulamaların TLS şifrelemesini kullanmasına izin vermek için, SQL Server için Microsoft JDBC Sürücüsü sürüm 1.2 sürümünden itibaren şu bağlantı özelliklerini kullanıma sunms: encrypt, trustServerCertificate, trustStore, trustStorePassword ve hostNameInCertificate. Sürücünün TLS şifrelemesi ile TDS 8.0 kullanmasına izin vermek için , serverCertificate bağlantı özelliği sürüm 11.2 sürümünden itibaren kullanıma sunulmuştur. Daha fazla bilgi için bkz. Bağlantı özelliklerini ayarlama.
Aşağıdaki tabloda, SQL Server sürümü için Microsoft JDBC Sürücüsünün olası TLS bağlantı senaryolarında nasıl davrandığını özetlemektedir. Her senaryoda farklı bir TLS bağlantı özellikleri kümesi kullanılır. Tablo şunları içerir:
- blank: "Özellik bağlantı dizesinde yok"
- value: "Özellik bağlantı dizesinde var ve değeri geçerli"
- any: "Özelliğin bağlantı dizesinde mevcut olması veya değerinin geçerli olması önemli değil"
Uyarı
Aynı davranış SQL Server kullanıcı kimlik doğrulaması ve Windows tümleşik kimlik doğrulaması için de geçerlidir.
| Özellik ayarları | Davranış |
|---|---|
|
encrypt = false veya blank trustServerCertificate = any hostNameInCertificate = any trustStore = any trustStorePassword = any |
Sürücü sunucuyu TLS şifrelemesini desteklemeye zorlamaz. Sunucuda otomatik olarak imzalanan bir sertifika varsa, sürücü TLS sertifika değişimini başlatır. TLS sertifikası doğrulanmaz ve yalnızca kimlik bilgileri (oturum açma paketindeki) şifrelenir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa, sürücü TLS sertifika değişimini başlatır. TLS sertifikası doğrulanmaz, ancak tüm iletişim şifrelenir. |
|
encrypt = true trustServerCertificate = true hostNameInCertificate = any trustStore = any trustStorePassword = any |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. trustServerCertificate özelliği "true" olarak ayarlanırsa, sürücü TLS sertifikasını doğrulamaz. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = true trustServerCertificate = false veya blank hostNameInCertificate = blank trustStore = blank trustStorePassword = blank |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. Sürücü, sunucu TLS sertifikasını doğrulamak için bağlantı URL'sinde belirtilen serverName özelliğini kullanır ve hangi sertifika deposunun kullanılacağını belirlemek için güven yöneticisi fabrikasının arama kurallarına güvenir. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = true trustServerCertificate = false veya blank hostNameInCertificate = value trustStore = blank trustStorePassword = blank |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. Sürücü, hostNameInCertificate özelliği için belirtilen değeri kullanarak TLS sertifikasının konu değerini doğrular. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = true trustServerCertificate = false veya blank hostNameInCertificate = blank trustStore = değer trustStorePassword = değer |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. Sürücü trustStore özellik değerini kullanarak trustStore dosyasının bütünlüğünü denetlemek için trustStore dosyasını ve trustStorePassword özellik değerini bulur. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = true trustServerCertificate = false veya blank hostNameInCertificate = blank trustStore = blank trustStorePassword = değer |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. Sürücü, varsayılan trustStore dosyasının bütünlüğünü denetlemek için trustStorePassword özellik değerini kullanır. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = true trustServerCertificate = false veya blank hostNameInCertificate = blank trustStore = değer trustStorePassword = blank |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. Sürücü , trustStore dosyasının konumunu aramak için trustStore özellik değerini kullanır. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = true trustServerCertificate = false veya blank hostNameInCertificate = value trustStore = blank trustStorePassword = değer |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. Sürücü, varsayılan trustStore dosyasının bütünlüğünü denetlemek için trustStorePassword özellik değerini kullanır. Ayrıca, sürücü TLS sertifikasını doğrulamak için hostNameInCertificate özellik değerini kullanır. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = true trustServerCertificate = false veya blank hostNameInCertificate = value trustStore = değer trustStorePassword = blank |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. Sürücü , trustStore dosyasının konumunu aramak için trustStore özellik değerini kullanır. Ayrıca, sürücü TLS sertifikasını doğrulamak için hostNameInCertificate özellik değerini kullanır. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = true trustServerCertificate = false veya blank hostNameInCertificate = value trustStore = değer trustStorePassword = değer |
Sürücü, sunucuyla TLS şifrelemesi kullanmayı istemektedir. Sunucu, istemcinin TLS şifrelemesini desteklemesini gerektiriyorsa veya sunucu şifrelemeyi destekliyorsa, sürücü TLS sertifika değişimini başlatır. Sürücü trustStore özellik değerini kullanarak trustStore dosyasının bütünlüğünü denetlemek için trustStore dosyasını ve trustStorePassword özellik değerini bulur. Ayrıca, sürücü TLS sertifikasını doğrulamak için hostNameInCertificate özellik değerini kullanır. Sunucu şifrelemeyi destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
|
encrypt = strict hostNameInCertificate = value trustStore = blank trustStorePassword = blank serverCertificate = değer |
Sürücü, sunucuyla TDS 8.0 strict TLS şifrelemesini kullanmayı istemektedir.Sürücü, ilk eylem olarak sunucuyla TLS el sıkışmasını ve sertifika değişimini başlatır. trustServerCertificate ayarı yoksayılır ve modda strict false olarak değerlendirilir.Sürücü, sunucu TLS sertifikasını doğrulamak için isteğe bağlı hostNameInCertificate veya serverCertificate özelliklerini kullanır. Sunucu TDS 8.0 bağlantılarını destekleyecek şekilde yapılandırılmamışsa, sürücü bir hata oluşturur ve bağlantıyı sonlandırır. |
Encrypt özelliği true olarak ayarlanırsa, SQL Server için Microsoft JDBC Sürücüsü, SQL Server ile TLS şifrelemesi anlaşması yapmak için JVM'nin varsayılan JSSE güvenlik sağlayıcısını kullanır. Varsayılan güvenlik sağlayıcısı TLS şifrelemesi konusunda başarılı bir şekilde anlaşmak için gereken özelliklerin tümünü desteklemeyebilir. Örneğin, varsayılan güvenlik sağlayıcısı SQL Server TLS sertifikasında kullanılan RSA ortak anahtarının boyutunu desteklemeyebilir. Bu durumda, varsayılan güvenlik sağlayıcısı JDBC sürücüsünün bağlantıyı sonlandırmasına neden olacak bir hata verebilir. Bu sorunu çözmek için aşağıdaki seçeneklerden biri kullanılabilir:
- SQL Server'ı daha küçük bir RSA ortak anahtarı olan bir sunucu sertifikasıyla yapılandırma
- JVM'yi "<java-home>/lib/security/java.security" güvenlik özellikleri dosyasında farklı bir JSSE güvenlik sağlayıcısı kullanacak şekilde yapılandırın
- Farklı bir JVM kullanma
Sunucu TLS sertifikası doğrulanıyor
TLS el sıkışması sırasında sunucu ortak anahtar sertifikasını istemciye gönderir. JDBC sürücüsü veya istemcisi, sunucu sertifikasının istemcinin güvendiği bir sertifika yetkilisi tarafından verildiğini doğrulamalı. Sürücü, sunucu sertifikasının aşağıdaki koşulları karşılamasını gerektirir:
- Sertifika, güvenilen bir sertifika yetkilisi tarafından verildi.
- Sunucu kimlik doğrulaması için sertifika verilmelidir.
- Sertifikanın süresi dolmamış.
- Konu'daki Ortak Ad (CN) veya sertifikanın Konu Diğer Adı'ndaki (SAN) bir DNS adı, bağlantı dizesinde belirtilen serverName değeriyle veya belirtilirse hostNameInCertificate özellik değeriyle tam olarak eşleşir.
- DNS adı joker karakter içerebilir. Önceki sürüm 7.2, SQL Server için Microsoft JDBC Sürücüsü joker karakter eşleştirmeyi desteklemez. Başka bir abc.com *.com eşleşmez ancak *.com *.com eşleşir. Sürüm 7.2 ve sonrasında standart sertifika joker kart eşleştirmesi desteklenir.
Şifreleme ile strict TDS 8.0'ın kullanılması için serverCertificate özellik değeri, sunucu sertifikası doğrulaması için kullanılacak sunucu sertifikasının yolunu sağlar. Bu dosya PEM dosya biçimini kullanmalıdır. Sunucudan alınan sertifika bu sertifikayla tam olarak eşleşmelidir.
Ayrıca bakınız
Şifrelemeyi kullanma
JDBC sürücü uygulamalarının güvenliğini sağlama