Validasi enkripsi dan sertifikat di Microsoft.Data.SqlClient
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk