Validasi enkripsi dan sertifikat di Microsoft.Data.SqlClient

Mengunduh ADO.NET

SQL Server selalu mengenkripsi paket jaringan yang terkait dengan masuk. Jika tidak ada sertifikat yang disediakan di server saat dimulai, SQL Server menghasilkan sertifikat yang ditandatangani sendiri, yang digunakan untuk mengenkripsi paket masuk.

Pada tingkat tinggi, enkripsi antara klien dan server memastikan data hanya dapat dibaca oleh klien dan server. Bagian penting dari proses enkripsi adalah validasi sertifikat server. Validasi sertifikat server memungkinkan klien untuk memastikan server adalah siapa yang dikatakannya. Sertifikat divalidasi untuk hal-hal seperti kedaluwarsa, rantai kepercayaan, dan bahwa nama dalam sertifikat cocok dengan nama server yang disambungkan klien. Untuk informasi selengkapnya, lihat Keamanan Lapisan Transportasi dan sertifikat digital.

Sangat disarankan agar Anda menyediakan sertifikat yang dapat diverifikasi pada SQL Server untuk konektivitas yang aman. Lapisan Keamanan Transportasi (TLS) hanya dapat dibuat aman dengan validasi sertifikat.

Aplikasi dapat meminta enkripsi semua lalu lintas jaringan dengan menggunakan Encrypt kata kunci string koneksi atau properti koneksi. Secara default, enkripsi semua lalu lintas jaringan untuk koneksi memerlukan sertifikat yang disediakan di server. Dengan mengatur klien Anda untuk mempercayai sertifikat di server, Anda mungkin menjadi rentan terhadap serangan man-in-the-middle. Jika Anda menyebarkan sertifikat yang dapat diverifikasi di server, pastikan pengaturan klien Encrypt adalah True dan Trust Server Certificate pengaturannya adalah False.

Untuk mengaktifkan enkripsi yang akan digunakan ketika sertifikat belum disediakan di server, Encrypt pengaturan klien dan Trust Server Certificate dapat digunakan. Dalam hal ini, enkripsi menggunakan sertifikat server yang ditandatangani sendiri tanpa validasi oleh klien. Konfigurasi ini mengenkripsi koneksi tetapi tidak mencegah perangkat di antara klien dan server mencegat koneksi dan memproksi enkripsi.

Perubahan perilaku enkripsi dan validasi sertifikat

Microsoft.Data.SqlClient versi 4.0 memperkenalkan perubahan yang melanggar dalam pengaturan enkripsi. Encrypt sekarang default ke True.

Microsoft.Data.SqlClient versi 2.0 memperkenalkan perubahan yang melanggar dalam perilaku Trust Server Certificate pengaturan. Sebelumnya, jika Encrypt diatur ke False, sertifikat server tidak akan divalidasi, terlepas dari pengaturannya Trust Server Certificate . Sekarang, sertifikat server divalidasi berdasarkan Trust Server Certificate pengaturan jika server memaksa enkripsi, bahkan jika Encrypt diatur ke False.

Versi 4.0

Tabel berikut ini menjelaskan hasil enkripsi dan validasi untuk pengaturan enkripsi dan sertifikat:

Encrypt pengaturan klien Trust Server Certificate pengaturan klien Force encryption pengaturan server Hasil
FALSE Salah (default) Tidak Enkripsi hanya terjadi untuk paket LOGIN. Sertifikat tidak divalidasi.
FALSE Salah (default) Ya (Perubahan perilaku dari versi 1.0 menjadi 2.0) Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal.
Salah True Ya Enkripsi semua lalu lintas jaringan terjadi, dan sertifikat tidak divalidasi.
True (default baru) Salah (default) T/A Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal.
True (default baru) True T/A Enkripsi semua lalu lintas jaringan terjadi, tetapi sertifikat tidak divalidasi.
Ketat (ditambahkan dalam versi 5.0) T/A T/A Enkripsi semua lalu lintas jaringan terjadi menggunakan TDS 8 hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal.

Perhatian

Tabel sebelumnya hanya menyediakan panduan tentang perilaku sistem di bawah konfigurasi yang berbeda. Untuk konektivitas yang aman, pastikan bahwa klien dan server keduanya memerlukan enkripsi. Pastikan juga bahwa server memiliki sertifikat yang dapat diverifikasi, dan bahwa TrustServerCertificate pengaturan pada klien diatur ke False.

Mulai dari Microsoft.Data.SqlClient versi 5.0, HostNameInCertificate adalah opsi koneksi baru. Validasi sertifikat server memastikan bahwa Nama Umum (CN) atau Nama Alternatif Subjek (SAN) dalam sertifikat cocok dengan nama server yang tersambung. Dalam beberapa kasus, seperti alias DNS, nama server mungkin tidak cocok dengan CN atau SAN. Nilai HostNameInCertificate dapat digunakan untuk menentukan CN atau SAN yang berbeda dan diharapkan dalam sertifikat server.

Versi 2.0

Mulai versi 2.0, ketika server memaksa enkripsi, klien memvalidasi sertifikat server berdasarkan Trust Server Certificate pengaturan, terlepas dari pengaturannya Encrypt .

Tabel berikut ini menjelaskan hasil enkripsi dan validasi untuk pengaturan enkripsi dan sertifikat:

Encrypt pengaturan klien Trust Server Certificate pengaturan klien Force encryption pengaturan server Hasil
Salah (default) Salah (default) Tidak Enkripsi hanya terjadi untuk paket LOGIN. Sertifikat tidak divalidasi.
Salah (default) Salah (default) Ya (Perubahan perilaku) Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal.
Salah (default) True Ya Enkripsi semua lalu lintas jaringan terjadi, dan sertifikat tidak divalidasi.
True Salah (default) T/A Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal.
True True T/A Enkripsi semua lalu lintas jaringan terjadi, tetapi sertifikat tidak divalidasi.

Perhatian

Tabel sebelumnya hanya menyediakan panduan tentang perilaku sistem di bawah konfigurasi yang berbeda. Untuk konektivitas yang aman, pastikan bahwa klien dan server keduanya memerlukan enkripsi. Pastikan juga bahwa server memiliki sertifikat yang dapat diverifikasi, dan bahwa TrustServerCertificate pengaturan pada klien diatur ke False.

Versi 1.0

Tabel berikut ini menjelaskan hasil enkripsi dan validasi untuk pengaturan enkripsi dan sertifikat:

Encrypt pengaturan klien Trust Server Certificate pengaturan klien Force encryption pengaturan server Hasil
Salah (default) Salah (default) Tidak Enkripsi hanya terjadi untuk paket LOGIN. Sertifikat tidak divalidasi.
Salah (default) Salah (default) Ya Enkripsi semua lalu lintas jaringan terjadi, tetapi sertifikat tidak divalidasi.
Salah (default) True Ya Enkripsi semua lalu lintas jaringan terjadi, dan sertifikat tidak divalidasi.
True Salah (default) T/A Enkripsi semua lalu lintas jaringan terjadi hanya jika ada sertifikat server yang dapat diverifikasi, jika tidak, upaya koneksi gagal.
True True T/A Enkripsi semua lalu lintas jaringan terjadi, tetapi sertifikat tidak divalidasi.

Lihat juga

String koneksi
Sintaks string koneksi