Aracılığıyla paylaş


Şifreleme ile bağlanma

JDBC sürücüsünü indirin

Bu makaledeki örneklerde, uygulamaların bir Java uygulamasında Aktarım Katmanı Güvenliği (TLS) şifrelemesini kullanmasına izin veren bağlantı dizesi özelliklerinin nasıl kullanılacağı açıklanmaktadır. Encrypt, trustServerCertificate, trustStore, trustStorePassword ve hostNameInCertificate gibi bu yeni bağlantı dizesi özellikleri hakkında daha fazla bilgi için bkz. Bağlantı özelliklerini ayarlama.

Bağlantıyı yapılandırma

Encrypt özelliği true ve trustServerCertificate özelliği true olarak ayarlandığında, SQL Server için Microsoft JDBC Sürücüsü SQL Server TLS sertifikasını doğrulamaz. Bu ayar, SQL Server örneğinin yalnızca otomatik olarak imzalanan sertifikaya sahip olduğu test ortamlarında bağlantılara izin vermek için yaygındır.

Aşağıdaki kod örneği, bir bağlantı dizesinde trustServerCertificate özelliğinin nasıl ayarlandığını gösterir:

String connectionUrl =
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true;trustServerCertificate=true";

Encrypt özelliği true ve trustServerCertificate özelliği false olarak ayarlandığında, SQL Server için Microsoft JDBC Sürücüsü SQL Server TLS sertifikasını doğrular. Sunucu sertifikasının doğrulanmasının TLS el sıkışmasının bir parçasıdır ve sunucunun bağlanacak doğru sunucu olmasını sağlar. Sunucu sertifikasını doğrulamak için güven malzemesinin, trustStore ve trustStorePassword bağlantı özellikleri açıkça kullanılarak veya temel alınan Java Sanal Makinesi'nin (JVM) varsayılan güven deposu örtük olarak kullanılarak bağlantı zamanında sağlanması gerekir.

trustStore özelliği, istemcinin güvendiği sertifikaların listesini içeren sertifika trustStore dosyasının yolunu (dosya adı dahil) belirtir. trustStorePassword özelliği, trustStore verilerinin bütünlüğünü denetlemek için kullanılan parolayı belirtir. JVM'nin varsayılan güven depolarını kullanma hakkında daha fazla bilgi için bkz. İstemciyi şifreleme için yapılandırma.

Aşağıdaki kod örneğinde, bir bağlantı dizesinde trustStore ve trustStorePassword özelliklerinin nasıl ayarlanacağı gösterilmektedir:

String connectionUrl =
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true; trustServerCertificate=false;" +
     "trustStore=storeName;trustStorePassword=storePassword";

JDBC Sürücüsü, sunucunun ana bilgisayar adını belirten hostNameInCertificate adlı başka bir özellik sağlar. Bu özelliğin değeri sertifikanın konu özelliğiyle eşleşmelidir.

Aşağıdaki kod örneği, bir bağlantı dizesinde hostNameInCertificate özelliğinin nasıl kullanılacağını gösterir:

String connectionUrl =
    "jdbc:sqlserver://localhost:1433;" +
     "databaseName=AdventureWorks;integratedSecurity=true;" +
     "encrypt=true; trustServerCertificate=false;" +
     "trustStore=storeName;trustStorePassword=storePassword;" +
     "hostNameInCertificate=hostName";

Uyarı

Alternatif olarak, SQLServerDataSource sınıfı tarafından sağlanan uygun ayarlayıcı yöntemlerini kullanarak bağlantı özelliklerinin değerini ayarlayabilirsiniz.

Encrypt özelliği true ise trustServerCertificate özelliği false olur ve bağlantı dizesindeki sunucu adı TLS sertifikasındaki sunucu adıyla eşleşmiyorsa aşağıdaki hata verilir: The driver couldn't establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "java.security.cert.CertificateException: Failed to validate the server name in a certificate during Secure Sockets Layer (SSL) initialization.". Sürüm 7.2 ve sonrasında sürücü, TLS sertifikasındaki sunucu adının en sol etiketinde joker karakter deseni eşleştirmeyi destekler.