Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Driver mendukung go-mssqldb beberapa mode enkripsi dan strategi validasi sertifikat untuk koneksi ke SQL Server dan Azure SQL. Artikel ini menjelaskan setiap mode enkripsi, cara mengonfigurasi validasi sertifikat, dan kapan menggunakan mode ketat TDS 8.0.
Pilih konfigurasi TLS
Gunakan tabel ini untuk memilih opsi teraman yang sesuai dengan lingkungan Anda sebelum Anda menyetel parameter individual.
| Skenario | Pengaturan yang direkomendasikan | Mengapa |
|---|---|---|
| Azure SQL atau SQL Server 2022 dan versi yang lebih baru, dan Anda menginginkan perlindungan default terkuat | encrypt=strict |
TDS 8.0 melakukan jabat tangan TLS sebelum negosiasi TDS dan selalu memvalidasi sertifikat. |
| Sertifikat server dirantai ke CA publik atau perusahaan tepercaya | encrypt=true |
Validasi sertifikat standar biasanya cukup ketika nama host dan rantai kepercayaan sudah benar. |
| Server menggunakan CA privat yang tidak ada di penyimpanan kepercayaan sistem | encrypt=true&certificate=/path/to/ca-cert.pem |
Menambahkan sertifikat CA ke kumpulan kepercayaan kustom dan mempertahankan validasi rantai normal. |
| Server tersebut menggunakan sertifikat yang ditandatangani sendiri dan Anda ingin melakukan pinning sertifikat | encrypt=true&serverCertificate=/path/to/server.pem |
Membandingkan sertifikat server yang sama persis, byte demi byte, alih-alih mengandalkan rantai sertifikat CA. |
| Pengembangan lokal atau lingkungan pengujian sementara saja | encrypt=true&TrustServerCertificate=true |
Tetap mengaktifkan enkripsi, tetapi melewatkan validasi identitas server. Jangan gunakan pengaturan ini dalam produksi. |
Mode enkripsi
Atur encrypt parameter koneksi ke salah satu nilai berikut:
| Value | Behavior |
|---|---|
strict |
Enkripsi TDS 8.0. Jabat tangan TLS terjadi sebelum negosiasi koneksi TDS. Memerlukan SQL Server 2022 atau Azure SQL. |
true atau mandatory |
Koneksi dienkripsi setelah jabat tangan pralogin TDS. |
false atau optional |
Enkripsi hanya digunakan jika server membutuhkannya. Ini adalah default ketika encrypt tidak ditentukan. Azure SQL selalu memerlukan enkripsi sisi server, sehingga koneksi ke Azure SQL dienkripsi terlepas dari pengaturan ini. |
disable |
Tidak ada enkripsi. Tidak disarankan untuk penggunaan di lingkungan produksi. |
Example
Aktifkan enkripsi dalam string koneksi dengan menggunakan encrypt parameter:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Validasi sertifikat
Saat Anda mengaktifkan enkripsi (encrypt=true atau encrypt=strict), driver memvalidasi sertifikat server kecuali Anda mengatur TrustServerCertificate=true. Ada dua pendekatan independen untuk validasi ini.
Validasi rantai dengan menggunakan certificate parameter
Berikan file sertifikat PEM atau DER. Driver menambahkan sertifikat ke kumpulan kepercayaan kustom dan melakukan validasi rantai X.509 standar terhadap kumpulan tersebut:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem
Perbandingan tingkat byte dengan menggunakan serverCertificate parameter
Nota
Parameter ini serverCertificate diperkenalkan di driver v1.9.6.
Berikan file PEM atau DER yang berisi sertifikat server yang tepat. Driver membandingkan sertifikat server byte demi byte dengan file yang disediakan. Driver tidak melakukan validasi rantai. Pendekatan ini berguna untuk sertifikat yang ditandatangani sendiri:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&serverCertificate=/path/to/server.pem
Penggantian nama host
Secara default, driver memvalidasi bahwa Nama Umum (CN) atau Nama Alternatif Subjek (SAN) sertifikat cocok dengan nama host server. Gunakan hostnameincertificate untuk mengganti nama host yang diharapkan:
sqlserver://<user>:<password>@10.0.0.5:1433?database=AdventureWorks2025&encrypt=true&hostnameincertificate=<server>.domain.com
Lewati validasi sertifikat
Atur TrustServerCertificate=true untuk melewati semua validasi sertifikat. Koneksi masih dienkripsi, tetapi identitas server tidak diverifikasi:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=true
Caution
Pengaturan TrustServerCertificate=true mengekspos koneksi ke serangan musuh di tengah. Gunakan opsi ini hanya untuk pengembangan dan pengujian.
Mode ketat TDS 8.0
TDS 8.0 (enkripsi ketat) melakukan jabat tangan TLS sebelum negosiasi protokol TDS apa pun. Pendekatan ini mencegah penyerang menurunkan peringkat seluruh koneksi. TDS 8.0 memerlukan SQL Server 2022 atau Azure SQL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=strict
Dalam mode ketat, TrustServerCertificate parameter diabaikan. Validasi sertifikat selalu terjadi, menggunakan penyimpanan kepercayaan sistem secara default. Anda dapat menyediakan certificate atau serverCertificate untuk validasi khusus.
Versi TLS Minimum
Gunakan parameter tlsmin untuk memaksakan versi minimum TLS:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&tlsmin=1.2
Nilai yang valid: 1.0, 1.1, 1.2, 1.3.
Ringkasan parameter enkripsi
| Parameter | Default | Description |
|---|---|---|
encrypt |
false |
Mode enkripsi. Azure SQL selalu memerlukan enkripsi sisi server terlepas dari pengaturan ini. |
TrustServerCertificate |
Tergantung pada encrypt |
Lewati validasi sertifikat saat true. Defaultnya adalah false kapan encrypt ditentukan dan true kapan encrypt dihilangkan. |
certificate |
- | Jalur file PEM/DER untuk validasi rantai. |
serverCertificate |
- | Jalur file PEM/DER untuk perbandingan tingkat byte. |
hostnameincertificate |
- | Ganti nama host yang diharapkan dalam sertifikat. |
tlsmin |
- | Versi TLS minimum. |