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.
Platí pro:SQL Server na Linuxu
SQL Server v Linuxu může pomocí protokolu TLS (Transport Layer Security) šifrovat data přenášená přes síť mezi klientskou aplikací a instancí SQL Serveru.
Podpora operačního systému
SQL Server podporuje stejné protokoly TLS na Windows i Linuxu: 1.3, 1.2, 1.1 a 1.0.
Počínaje SQL Serverem 2025 (17.x):
- Protokol TLS 1.3 je ve výchozím nastavení povolený.
- SUSE Linux Enterprise Server (SLES) se nepodporuje.
Postup konfigurace protokolu TLS je specifický pro operační systém, na kterém běží SQL Server.
Note
Pro koncové body pro zrcadlení databáze skupiny dostupnosti Always On nejsou protokoly TLS podporovány.
Požadavky na certifikáty
Ujistěte se, že vaše certifikáty splňují tyto požadavky:
Aktuální systémový čas musí být po vlastnosti
Valid fromcertifikátu a před vlastnostíValid tocertifikátu.Certifikát musí být určený pro ověřování serveru. To vyžaduje, aby vlastnost
Enhanced Key Usagecertifikátu byla specifikovánaServer Authentication (1.3.6.1.5.5.7.3.1).Certifikát musí být vytvořen pomocí možnosti
KeySpecAT_KEYEXCHANGE. Vlastnost použití klíče certifikátu (KEY_USAGE) obvykle zahrnuje také šifrování klíče (CERT_KEY_ENCIPHERMENT_KEY_USAGE).Vlastnost
Subjectcertifikátu musí znamenat, že běžný název (CN) je stejný jako název hostitele nebo plně kvalifikovaný název domény (FQDN) počítače serveru.Note
Podporují se certifikáty se zástupnými znaky.
Konfigurace knihoven OpenSSL pro použití (volitelné)
V adresáři /opt/mssql/lib/ můžete vytvořit symbolické odkazy, které odkazují na knihovny libcrypto.so a libssl.so pro šifrování. To je užitečné, pokud chcete vynutit, aby SQL Server používal jinou verzi OpenSSL než výchozí, kterou poskytuje systém. Pokud tyto symbolické odkazy nejsou k dispozici, SQL Server načte výchozí nakonfigurované knihovny OpenSSL v systému.
Tyto symbolické odkazy by měly být pojmenovány libcrypto.so a libssl.so a umístěny v adresáři /opt/mssql/lib/.
Note
Příklad použití funkce Let's Encrypt k vygenerování certifikátu najdete v blogovém příspěvku Odemknutí výkonu dat v Azure s SQL Serverem na virtuálních počítačích Azure s Linuxem a službou Azure AI Search.
Overview
Tls se používá k šifrování připojení z klientské aplikace k SQL Serveru. Při správné konfiguraci zajišťuje protokol TLS jak ochranu osobních údajů, tak integritu dat pro komunikaci mezi klientem a serverem. Připojení TLS můžou být inicializována klientem nebo iniciovanou serverem.
Note
Pro koncové body pro zrcadlení databáze skupiny dostupnosti Always On nejsou protokoly TLS podporovány.
- šifrování iniciované klientem
- Server inicioval šifrování
Následující část popisuje nastavení šifrování iniciovaného klientem.
Generování certifikátu
/CN by se měl shodovat s plně kvalifikovaným názvem domény hostitele SQL Serveru.
Caution
Tento příklad používá certifikát podepsaný svým držitelem. Certifikáty podepsané svým držitelem by se neměly používat pro produkční scénáře. Měli byste použít certifikáty certifikační autority.
Ujistěte se, že složky, kde ukládáte certifikáty a soukromé klíče, jsou přístupné uživateli mssql nebo skupině a mají nastavená oprávnění na 700 (drwx------). Složky můžete vytvářet ručně s oprávněními nastavenými na 700 (drwx------) a vlastněnými uživatelem mssql nebo skupinou. Případně nastavte oprávnění na 755 (drwxr-xr-x) a ujistěte se, že složky jsou pro skupinu přístupné mssql . Například můžete vytvořit složku zavolanou sslcert pod cestou /var/opt/mssql/ a uložit certifikát a soukromý klíč s oprávněními na souborech nastavenými na 600, jak je ukázáno v následujícím příkladu.
openssl req -x509 -nodes -newkey rsa:2048 -subj '/CN=mssql.contoso.com' -keyout mssql.key -out mssql.pem -days 365
sudo chown mssql:mssql mssql.pem mssql.key
sudo chmod 600 mssql.pem mssql.key
# Save the certificate to the certs folder under /etc/ssl/
sudo mv mssql.pem /etc/ssl/certs/
# Save the private key to the private folder under /etc/ssl/
sudo mv mssql.key /etc/ssl/private/
Konfigurace SQL Serveru
Pro SQL Server 2022 (16.x) a starší verze:
systemctl stop mssql-server
sudo cat /var/opt/mssql/mssql.conf
sudo /opt/mssql/bin/mssql-conf set network.tlscert /etc/ssl/certs/mssql.pem
sudo /opt/mssql/bin/mssql-conf set network.tlskey /etc/ssl/private/mssql.key
sudo /opt/mssql/bin/mssql-conf set network.tlsprotocols 1.2
sudo /opt/mssql/bin/mssql-conf set network.forceencryption 0
systemctl restart mssql-server
Pro SQL Server 2025 (17.x):
systemctl stop mssql-server
sudo cat /var/opt/mssql/mssql.conf
sudo /opt/mssql/bin/mssql-conf set network.tlscert /etc/ssl/certs/mssql.pem
sudo /opt/mssql/bin/mssql-conf set network.tlskey /etc/ssl/private/mssql.key
sudo /opt/mssql/bin/mssql-conf set network.forceencryption 0
systemctl restart mssql-server
Registrace certifikátu na klientském počítači (Windows, Linux nebo macOS)
Pokud používáte certifikát podepsaný CA, zkopírujte certifikát Certificate Authority (CA) místo uživatelského certifikátu na klientský stroj.
Pokud používáte samopodepsaný certifikát, zkopírujte
.pemsoubor do složky pro distribuci a spusťte příkaz k jeho povolení:Ubuntu: Zkopírujte certifikát do
/usr/share/ca-certificates/, přejmenujte jeho rozšíření na.crt, a použijtedpkg-reconfigure ca-certificatesho pro povolení jako certifikát systémové CA.RHEL: Zkopírujte certifikát do umístění
/etc/pki/ca-trust/source/anchors/a pomocíupdate-ca-trustjej aktivujte jako certifikát systémové CA.SUSE: Zkopírujte certifikát do
/usr/share/pki/trust/anchors/a pomocíupdate-ca-certificatesjej povolte jako systémový certifikát CA.Windows: Importujte soubor
.pemjako certifikát v části Aktuální uživatel>Důvěryhodné kořenové certifikační autority>Certifikáty.macOS:
Zkopírovat certifikát do
/usr/local/etc/openssl/certs.Spuštěním následujícího příkazu získejte hodnotu hash:
/usr/local/Cellar/openssl/1.0.2l/openssl x509 -hash -in mssql.pem -nooutPřejmenujte certifikát na zadanou hodnotu. Například použijte
mv mssql.pem dc2dd900.0. Ujistěte se, žedc2dd900.0je v/usr/local/etc/openssl/certs.
Příklady připojovacích řetězců
Caution
Vaše heslo by mělo splňovat výchozí zásady hesla pro SQL Server. Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.
SQL Server Management Studio
sqlcmdsqlcmd -S <sqlhostname> -N -U sa -P '<password>'ADO.NET
"Encrypt=True; TrustServerCertificate=False;"ODBC
"Encrypt=Yes; TrustServerCertificate=no;"JDBC
"encrypt=true; trustServerCertificate=false;"
Běžné chyby připojení
| Zpráva o chybě | Opravit |
|---|---|
The certificate chain was issued by an authority that is not trusted. |
K této chybě dochází v případě, že klienti nemůžou ověřit podpis na certifikátu prezentovaného SQL Serverem během metody handshake protokolu TLS. Ujistěte se, že klient důvěřuje certifikátu SQL Serveru přímo nebo certifikační autoritě, která certifikát SYSTÉMU SQL Server podepsala. |
The target principal name is incorrect. |
Ujistěte se, že pole běžného názvu na certifikátu SQL Server odpovídá názvu serveru uvedenému v připojovací řetězec klienta. |
An existing connection was forcibly closed by the remote host. |
K této chybě může dojít v případě, že klient nepodporuje verzi protokolu TLS vyžadovanou SQL Serverem. Pokud je například SQL Server nakonfigurovaný tak, aby vyžadoval protokol TLS 1.2, ujistěte se, že vaši klienti podporují také protokol TLS 1.2. |
Ubuntu 20.04 a další nedávné verze distribuce Linuxu
Symptom
Když SQL Server v instanci Linuxu načte certifikát vytvořený pomocí algoritmu podpisu, který používá méně než 112 bitů zabezpečení (například MD5, SHA-1), může se zobrazit chyba selhání připojení, například v tomto příkladu:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - An existing connection was forcibly closed by the remote host.) (Microsoft SQL Server, Error: 10054)
Příčinou chyby je povolení úrovně zabezpečení OpenSSL 2 ve výchozím nastavení v Ubuntu 20.04 a novějších verzích. Úroveň zabezpečení 2 zakazuje navázání připojení TLS, která mají méně než 112 bitů zabezpečení.
Řešení
Nainstalujte certifikát s podpisovým algoritmem, který nabízí úroveň zabezpečení alespoň 112 bitů. Algoritmy podpisů, které splňují tento požadavek, zahrnují SHA-224, SHA-256, SHA-384 a SHA-512.