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 – Linux
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. SQL Server podporuje stejné protokoly TLS v systémech Windows i Linux: 1.2, 1.1 a 1.0.
Poznámka
Počínaje systémem SQL Server 2025 (17.x) je ve výchozím nastavení povolený protokol TLS 1.3.
Postup konfigurace protokolu TLS je specifický pro operační systém, na kterém běží SQL Server.
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.Poznámka
Podporujeme 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/.
Poznámka
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.
Přehled
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.
- š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.
Opatrnost
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, do kterých ukládáte certifikáty a privátní klíče, jsou přístupné mssql uživatelem nebo skupinou a mají oprávnění nastavená na 700 (drwx-----). Složky můžete vytvářet ručně s oprávněními nastavenými na 700 (drwx------), které vlastní uživatel nebo skupina mssql, nebo můžete nastavit oprávnění na 755 (drwxr-xr-x), což mohou vlastnit jiní uživatelé, ale je stále přístupné pro skupinu uživatelů mssql. Můžete například vytvořit složku s názvem sslcert pod cestou /var/opt/mssql/a uložit certifikát a privátní klíč s oprávněními k souborům nastaveným na 600, jak je znázorněno v následující ukázce.
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
#Saving the certificate to the certs folder under /etc/ssl/ which has the following permission 755(drwxr-xr-x)
sudo mv mssql.pem /etc/ssl/certs/ drwxr-xr-x
#Saving the private key to the private folder under /etc/ssl/ with permissions set to 755(drwxr-xr-x)
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ý certifikační autoritou, musíte zkopírovat certifikát certifikační autority (CA) místo certifikátu uživatele do klientského počítače.
Pokud používáte certifikát podepsaný svým držitelem, zkopírujte soubor
.pemdo následujících složek odpovídajících distribuci a spusťte příkazy, které je povolí:Ubuntu: Zkopírujte certifikát do
/usr/share/ca-certificates/, přejmenujte jeho rozšíření na.crta pomocídpkg-reconfigure ca-certificatesho povolte jako systémový certifikát certifikační autority.RHEL: Zkopírujte certifikát do
/etc/pki/ca-trust/source/anchors/a pomocíupdate-ca-trustho povolte jako certifikát systémové certifikační autority.SUSE: Zkopírujte certifikát do
/usr/share/pki/trust/anchors/a pomocíupdate-ca-certificatesho povolte jako systémový certifikát certifikační autority.Windows: Importujte soubor
.pemjako certifikát do aktuálního uživatele > důvěryhodných kořenových certifikačních autorit > certifikáty.macOS:
Zkopírování certifikátu do
/usr/local/etc/openssl/certsSpuš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. Příklad:
mv mssql.pem dc2dd900.0. Ujistěte se, že jedc2dd900.0v/usr/local/etc/openssl/certs
Příklady připojovacích řetězců
Opatrnost
Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . 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
sqlcmd
sqlcmd -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 Common Name v certifikátu SQL Serveru odpovídá názvu serveru zadanému v připojovacím řetězci 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
příznak
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:
Připojení bylo úspěšně navázáno se serverem, ale během procesu přihlášení došlo k chybě. (provider: Zprostředkovatel SSL, chyba: 0 – Existující připojení bylo vzdáleným hostitelem násilně ukončeno.) (Microsoft SQL Server, chyba: 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.