Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovladač go-mssqldb podporuje více šifrovacích režimů a strategie ověřování certifikátů pro připojení k SQL Server a Azure SQL. Tento článek vysvětluje každý režim šifrování, jak nastavit validaci certifikátů a kdy použít přísný režim TDS 8.0.
Vyberte konfiguraci TLS
Použijte tuto tabulku k výběru nejbezpečnější možnosti, která odpovídá vašemu prostředí, než nastavíte jednotlivé parametry.
| Scénář | Doporučená nastavení | Proč |
|---|---|---|
| Azure SQL nebo SQL Server 2022 a pozdější verze a chcete nejsilnější výchozí ochranu | encrypt=strict |
TDS 8.0 provádí TLS handshake před TDS vyjednáváním a vždy validuje certifikát. |
| Serverový certifikát navazuje na důvěryhodnou veřejnou nebo podnikovou certifikační autoritu | encrypt=true |
Standardní ověření certifikátů obvykle stačí, když jsou název hostitele a řetězec důvěry již správné. |
| Server používá soukromou CA, která není v systémovém úložišti důvěry | encrypt=true&certificate=/path/to/ca-cert.pem |
Přidává CA certifikát do vlastního fondu důvěr a zachovává normální řetězovou validaci. |
| Server používá samopodepsaný certifikát a vy chcete připnout certifikát | encrypt=true&serverCertificate=/path/to/server.pem |
Porovnává přesný serverový certifikát bajt po bajtu místo spoléhání se na řetězec CA. |
| Pouze lokální vývojová nebo dočasná testovací prostředí | encrypt=true&TrustServerCertificate=true |
Šifrování zůstává zapnuté, ale vynechává ověřování identity serveru. Toto nastavení v produkci nepoužívejte. |
Šifrovací režimy
Nastavte encrypt parametr spojení na jednu z následujících hodnot:
| Value | Chování |
|---|---|
strict |
Šifrování TDS 8.0. TLS handshake probíhá před vyjednáváním TDS spojení. Vyžaduje SQL Server 2022 nebo Azure SQL. |
true nebo mandatory |
Spojení je zašifrováno po TDS prelogin handshake. |
false nebo optional |
Šifrování se používá pouze tehdy, pokud to server vyžaduje. Toto je výchozí možnost, pokud není zadáno encrypt. Azure SQL vždy vyžaduje šifrování na straně serveru, takže připojení k Azure SQL je šifrované bez ohledu na toto nastavení. |
disable |
Žádné šifrování. Nedoporučuje se pro produkční prostředí. |
Příklad
Povolte šifrování v připojovací řetězec pomocí parametruencrypt:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true
Ověření certifikátu
Když povolíte šifrování (encrypt=true nebo encrypt=strict), ovladač ověřuje serverový certifikát, pokud nenastavíte TrustServerCertificate=true. Existují dva nezávislé přístupy k této validaci.
Řetězová validace pomocí parametru certificate
Uveďte soubor s certifikátem PEM nebo DER. Ovladač přidá certifikát do vlastního trustového poolu a provede standardní X.509 řetězovou validaci proti tomuto poolu:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&certificate=/path/to/ca-cert.pem
Porovnání na úrovni bajtů pomocí parametru serverCertificate
Note
Tento serverCertificate parametr byl zaveden ve verzi driver 1.9.6.
Uveďte soubor PEM nebo DER obsahující přesný certifikát serveru. Ovladač porovnává certifikát serveru bajt po bajtu s poskytnutým souborem. Ovladač neprovádí řetězovou validaci. Tento přístup je užitečný pro samopodepsané certifikáty:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&serverCertificate=/path/to/server.pem
Přepsání jména hostitele
Ve výchozím nastavení ovladač ověřuje, že běžné jméno certifikátu (CN) nebo subjektové alternativní jméno (SAN) odpovídá jménu hostitele serveru. Použijte hostnameincertificate k přepsání očekávaného názvu hostitele:
sqlserver://<user>:<password>@10.0.0.5:1433?database=AdventureWorks2025&encrypt=true&hostnameincertificate=<server>.domain.com
Přeskočit ověření certifikátu
Nastavte TrustServerCertificate=true tak, aby se přeskočilo veškeré ověřování certifikátů. Spojení je stále šifrované, ale identita serveru není ověřena:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&TrustServerCertificate=true
Caution
Nastavení TrustServerCertificate=true odhaluje spojení s útoky protivníka uprostřed. Tuto možnost používejte pouze pro vývoj a testování.
TDS 8.0 přísný režim
TDS 8.0 (přísné šifrování) provede navázání spojení TLS před jakýmkoli vyjednáváním protokolu TDS. Tento přístup zabraňuje útočníkovi v downgradování celého připojení. TDS 8.0 vyžaduje SQL Server 2022 nebo Azure SQL:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=strict
V přísném režimu je parametr TrustServerCertificate ignorován. Ověření certifikátů probíhá vždy, ve výchozím nastavení s použitím systémového úložiště důvěryhodných certifikátů. Můžete poskytnout certificate nebo serverCertificate pro vlastní ověření.
Minimální verze protokolu TLS
Použijte tlsmin parametr k vynucení minimální verze TLS:
sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&encrypt=true&tlsmin=1.2
Platné hodnoty: 1.0, 1.1, 1.21.3.
Shrnutí parametrů šifrování
| Parameter | Výchozí | Description |
|---|---|---|
encrypt |
false |
Režim šifrování. Azure SQL vždy vyžaduje šifrování na straně serveru bez ohledu na toto nastavení. |
TrustServerCertificate |
Závisí na encrypt |
Přeskočte ověření certifikátu, když true. Výchozí je tehdy false , kdy encrypt je specifikován, a true když encrypt je vynechán. |
certificate |
- | Cesta k souboru PEM/DER pro ověřování řetězce. |
serverCertificate |
- | Cesta k souboru PEM/DER pro porovnání po bajtech. |
hostnameincertificate |
- | Přepsat očekávaný název hostitele v certifikátu. |
tlsmin |
- | Minimální verze TLS. |