Menyambungkan dengan enkripsi
Contoh dalam artikel ini menjelaskan cara menggunakan properti string koneksi yang memungkinkan aplikasi menggunakan enkripsi Keamanan Lapisan Transportasi (TLS) dalam aplikasi Java. Untuk informasi selengkapnya tentang properti string koneksi baru ini seperti enkripsi, trustServerCertificate, trustStore, trustStorePassword, dan hostNameInCertificate, lihat Mengatur properti koneksi.
Mengonfigurasi koneksi
Ketika properti enkripsi diatur ke true dan properti trustServerCertificate diatur ke true, Driver Microsoft JDBC untuk SQL Server tidak akan memvalidasi sertifikat TLS SQL Server. Pengaturan ini umum untuk mengizinkan koneksi di lingkungan pengujian, seperti di mana instans SQL Server hanya memiliki sertifikat yang ditandatangani sendiri.
Contoh kode berikut menunjukkan cara mengatur properti trustServerCertificate dalam string koneksi:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true;trustServerCertificate=true";
Ketika properti enkripsi diatur ke true dan properti trustServerCertificate diatur ke false, Driver Microsoft JDBC untuk SQL Server akan memvalidasi sertifikat TLS SQL Server. Memvalidasi sertifikat server adalah bagian dari jabat tangan TLS dan memastikan bahwa server adalah server yang benar untuk disambungkan. Untuk memvalidasi sertifikat server, materi kepercayaan harus disediakan pada waktu koneksi baik dengan menggunakan properti koneksi trustStore dan trustStorePassword secara eksplisit, atau dengan menggunakan penyimpanan kepercayaan default Java Virtual Machine (JVM) yang mendasar secara implisit.
Properti trustStore menentukan jalur (termasuk nama file) ke file trustStore sertifikat, yang berisi daftar sertifikat yang dipercaya klien. Properti trustStorePassword menentukan kata sandi yang digunakan untuk memeriksa integritas data trustStore. Untuk informasi selengkapnya tentang menggunakan penyimpanan kepercayaan default JVM, lihat Mengonfigurasi klien untuk enkripsi.
Contoh kode berikut menunjukkan cara mengatur properti trustStore dan trustStorePassword dalam string koneksi:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true; trustServerCertificate=false;" +
"trustStore=storeName;trustStorePassword=storePassword";
Driver JDBC menyediakan properti lain, hostNameInCertificate, yang menentukan nama host server. Nilai properti ini harus cocok dengan properti subjek sertifikat.
Contoh kode berikut menunjukkan cara menggunakan properti hostNameInCertificate dalam string koneksi:
String connectionUrl =
"jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true; trustServerCertificate=false;" +
"trustStore=storeName;trustStorePassword=storePassword;" +
"hostNameInCertificate=hostName";
Catatan
Atau, Anda dapat mengatur nilai properti koneksi dengan menggunakan metode setter yang sesuai yang disediakan oleh kelas SQLServerDataSource.
Jika properti enkripsi benar, properti trustServerCertificate salah, dan jika nama server di string koneksi tidak cocok dengan nama server dalam sertifikat TLS, kesalahan berikut akan dikeluarkan: 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."
. Dengan versi 7.2 dan yang lebih baru, driver mendukung pencocokan pola kartubebas di label paling kiri dari nama server dalam sertifikat TLS.