Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sürücü, go-mssqldb SQL Server ve Azure SQL bağlantıları için birden fazla şifreleme modunu ve sertifika doğrulama stratejilerini destekler. Bu makale, her şifreleme modunu, sertifika doğrulamasının nasıl yapılandırılacağını ve TDS 8.0 katı modunun ne zaman kullanılacağını açıklar.
Bir TLS yapılandırması seçin
Bireysel parametreleri ayarlamadan önce ortamınıza en uygun en güvenli seçeneği seçmek için bu tabloyu kullanın.
| Scenario | Önerilen ayarlar | Neden? |
|---|---|---|
| Azure SQL veya SQL Server 2022 ve sonraki sürümler, en güçlü varsayılan korumayı istersiniz | encrypt=strict |
TDS 8.0, TDS müzakere öncesi TLS el sıkışmasını gerçekleştirir ve sertifikayı her zaman doğrular. |
| Sunucu sertifikası, güvenilir bir kamu veya kurumsal CA ile zincirlenir | encrypt=true |
Standart sertifika doğrulaması genellikle ana adı ve güven zinciri zaten doğru olduğunda yeterlidir. |
| Sunucu, sistem güven deposunda olmayan özel bir CA kullanıyor | encrypt=true&certificate=/path/to/ca-cert.pem |
CA sertifikasını özel bir güven havuzuna ekler ve normal zincir doğrulamasını korur. |
| Sunucu kendi kendine imzalanmış bir sertifika kullanıyor ve sertifika sabitlenmesi gerekiyor | encrypt=true&serverCertificate=/path/to/server.pem |
CA zincirine güvenmek yerine tam sunucu sertifikası bayt bayt karşılaştırır. |
| Sadece yerel geliştirme veya geçici test ortamları | encrypt=true&TrustServerCertificate=true |
Şifreleme açık kalıyor ama sunucu kimliği doğrulamasını atlıyor. Bu ayarı üretimde kullanma. |
Şifreleme modları
Bağlantı parametresini encrypt aşağıdaki değerlerden birine ayarlayın:
| Değer | Davranış |
|---|---|
strict |
TDS 8.0 şifreleme. TLS el sıkışması, TDS bağlantı müzakeresinden önce gerçekleşir. SQL Server 2022 veya Azure SQL gerektirir. |
true veya mandatory |
Bağlantı, TDS ön giriş el sıkışmasından sonra şifreleniyor. |
false veya optional |
Şifreleme yalnızca sunucu gerektiriyorsa kullanılır.
encrypt belirtilmediğinde bu varsayılandır. Azure SQL her zaman sunucu tarafında şifreleme gerektirir, bu yüzden Azure SQL bağlantıları bu ayar bağımsız olarak şifrelenir. |
disable |
Şifreleme yok. Üretim için önerilmez. |
Example
Şifrelemeyi şu parametreyi kullanarak encrypt bağlantı dizesi'de etkinleştirin:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Sertifika doğrulama
Şifrelemeyi etkinleştirdiğinizde (encrypt=true veya encrypt=strict), TrustServerCertificate=true ayarlamadığınız sürece sürücü sunucu sertifikasını doğrular. Bu doğrulama için iki bağımsız yaklaşım mevcuttur.
certificate parametresi kullanılarak zincir doğrulaması
Bir PEM veya DER sertifika dosyası sağlayın. Sürücü, sertifikayı özel bir güven havuzuna ekler ve o havuza karşı standart X.509 zincir doğrulaması gerçekleştirir:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem
serverCertificate parametresi kullanılarak bayt düzeyinde karşılaştırma
Note
Parametre, serverCertificate sürücü sürümü v1.9.6'da tanıtıldı.
Tam sunucu sertifikasını içeren bir PEM veya DER dosyası sağla. Sürücü, sunucunun sertifika baytını bayt bayt ile sağlanan dosyayla karşılaştırır. Sürücü zincir doğrulaması yapmaz. Bu yaklaşım, kendi kendine imzalanan sertifikalar için faydalıdır:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&serverCertificate=/path/to/server.pem
Sunucu adı geçersiz kılma
Varsayılan olarak, sürücü sertifikanın Ortak Adı (CN) veya Özne Alternatif Adı (SAN) sunucu ana adıyla eşleşip eşleşmediğini doğrular. Beklenen ana bilgisayar adını geçersiz kılmak için hostnameincertificate kullanın:
sqlserver://<user>:<password>@10.0.0.5:1433?database=AdventureWorks2025&encrypt=true&hostnameincertificate=<server>.domain.com
Sertifika doğrulamasını atlayın
Tüm sertifika doğrulamasını atlayacak şekilde ayarlandı TrustServerCertificate=true . Bağlantı hâlâ şifrelenmiş, ancak sunucu kimliği doğrulanmamış:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=true
Dikkat
Ortam TrustServerCertificate=true , bağlantıyı ortadaki düşman saldırılarına maruz bırakır. Bu seçeneği sadece geliştirme ve test için kullanın.
TDS 8.0 katı mod
TDS 8.0 (sıkı şifreleme), herhangi bir TDS protokolü müzakeresinden önce TLS el sıkışmasını gerçekleştirir. Bu yaklaşım, saldırganın tüm bağlantıyı düşürmesini engeller. TDS 8.0 requires SQL Server 2022 or Azure SQL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=strict
Sıkı modda parametre TrustServerCertificate göz ardı edilir. Sertifika doğrulaması her zaman sistem güven deposu kullanılarak gerçekleşir. Özel doğrulama için certificate veya serverCertificate sağlayabilirsiniz.
Minimum TLS sürümü
Minimum TLS sürümünü zorunlu kılmak için parametreyi tlsmin kullanın:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&tlsmin=1.2
Geçerli değerler: 1.0, 1.1, 1.2, 1.3.
Şifreleme parametre özeti
| Parametre | Default | Description |
|---|---|---|
encrypt |
false |
Şifreleme modu. Azure SQL, bu ayar ne olursa olsun her zaman sunucu tarafında şifreleme gerektirir. |
TrustServerCertificate |
Bağlı encrypt |
Sertifika doğrulamasını true olduğunda atlayın.
encrypt belirtildiğinde varsayılan olarak false, encrypt atlandığında ise true kullanılır. |
certificate |
- | Zincir doğrulama için PEM/DER dosya yolu. |
serverCertificate |
- | Bayt düzeyinde karşılaştırma için PEM/DER dosya yolu. |
hostnameincertificate |
- | Sertifikadaki beklenen ana bilgisayar adını geçersiz kıl. |
tlsmin |
- | Minimum TLS versiyonu. |