Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server Linux rendszeren
A Linuxon futó SQL Server a Transport Layer Security (TLS) használatával titkosíthatja az ügyfélalkalmazás és az SQL Server egy példánya közötti hálózaton keresztül továbbított adatokat.
Operációs rendszer támogatása
SQL Server ugyanazokat a TLS-protokollokat támogatja Windows és Linux rendszeren is: 1.3, 1.2, 1.1 és 1.0.
Az SQL Server 2025-től kezdve (17.x):
- A TLS 1.3 alapértelmezés szerint engedélyezve van
- A SUSE Linux Enterprise Server (SLES) nem támogatott
A TLS konfigurálásához szükséges lépések az SQL Servert futtató operációs rendszerre vonatkoznak.
Note
A TLS nem támogatott az Always On rendelkezésre állási csoport adatbázis-tükrözési végpontjai esetében.
Tanúsítványokra vonatkozó követelmények
Győződjön meg arról, hogy a tanúsítványok megfelelnek az alábbi követelményeknek:
Az aktuális rendszeridőnek a tanúsítvány
Valid fromtulajdonsága és a tanúsítványValid totulajdonsága előtt kell lennie.A tanúsítványnak kiszolgálóhitelesítésre kell készülnie. A tanúsítvány
Enhanced Key Usagetulajdonságának meg kell adniaServer Authentication (1.3.6.1.5.5.7.3.1)-et ehhez.A tanúsítványt a
KeySpecAT_KEYEXCHANGElehetőségével kell létrehozni. A tanúsítvány kulcshasználati tulajdonsága (KEY_USAGE) általában a kulcsok titkosítását (CERT_KEY_ENCIPHERMENT_KEY_USAGE) is tartalmazza.A tanúsítvány
Subjecttulajdonságának azt kell jeleznie, hogy a közös név (CN) megegyezik a kiszolgálószámítógép hostnevével vagy a maradéktalanul kvalifikált tartománynevével (FQDN).Note
A csillagozott tanúsítványok támogatottak.
Az OpenSSL-kódtárak konfigurálása használatra (nem kötelező)
A /opt/mssql/lib/ könyvtárban olyan szimbolikus hivatkozásokat hozhat létre, amelyek hivatkoznak arra, hogy mely libcrypto.so és libssl.so kódtárakat kell használni a titkosításhoz. Ez akkor hasznos, ha arra szeretné kényszeríteni az SQL Servert, hogy a rendszer által alapértelmezetttől eltérő OpenSSL-verziót használjon. Ha ezek a szimbolikus hivatkozások nem találhatók, az SQL Server betölti az alapértelmezett konfigurált OpenSSL-kódtárakat a rendszeren.
Ezeket a szimbolikus hivatkozásokat el kell nevezni libcrypto.so és libssl.so, és a /opt/mssql/lib/ könyvtárba kell helyezni.
Note
"Példaként arra, hogyan lehet Let's Encrypt alkalmazásával tanúsítványt generálni, tekintse meg a blogbejegyzést: 'Az adatok erejének feloldása az Azure-ban Linuxos Azure virtuális gépeken futó SQL Serverrel és Azure AI kereséssel' (,)."
Overview
A TLS az ügyfélalkalmazás és az SQL Server közötti kapcsolatok titkosítására szolgál. Ha megfelelően van konfigurálva, a TLS biztosítja az adatvédelem és az adatintegritás védelmét az ügyfél és a kiszolgáló közötti kommunikációhoz. A TLS-kapcsolatokat kezdeményezheti a kliens vagy a szerver.
Note
A TLS nem támogatott az Always On rendelkezésre állási csoport adatbázis-tükrözési végpontjai esetében.
Az alábbi szakasz az ügyfél által kezdeményezett titkosítás beállítását ismerteti.
Tanúsítvány létrehozása
/CN-nak egyeznie kell az SQL Server-gazdagép teljes-körű tartománynevével.
Caution
Ez a példa egy önaláírt tanúsítványt használ. Az önaláírt tanúsítványokat nem szabad éles forgatókönyvekhez használni. Ca-tanúsítványokat kell használnia.
Győződjön meg róla, hogy azok a mappák, amelyekbe a tanúsítványait és a titkos kulcsait menti, elérhetők a mssql felhasználó vagy csoport számára, és hogy a jogosultságaik drwx------ (700) értékre vannak állítva. Manuálisan is létrehozhatsz mappákat, amelyeknek a jogosultsága (drwx------) van beállítva 700 , és a felhasználó vagy a csoport tulajdonában vannakmssql. Alternatívaként állítsd be a jogosultságokat 755 (drwxr-xr-x) -re, és győződj meg róla, hogy a mappák elérhetőek a mssql csoport számára. Például létrehozhatsz egy sslcert nevű mappát a(z) /var/opt/mssql/ elérési út alatt, és elmentheted a tanúsítványt és a titkos kulcsot úgy, hogy a fájlok engedélyei 600 legyenek, ahogyan az alábbi minta mutatja.
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/
SQL Server konfigurálása
SQL Server 2022 (16.x) és korábbi verziók esetén:
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
SQL Server 2025 esetén (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
A tanúsítvány regisztrálása az ügyfélszámítógépen (Windows, Linux vagy macOS)
Ha CA-által aláírt tanúsítványt használsz, másold le a Tanúsítványhatóság (CA) tanúsítványt a felhasználói tanúsítvány helyett az ügyfélgépre.
Ha az önalázott tanúsítványt használod, másold át a
.pemfájlt a disztribúciód mappájába, és futtatd a parancsot, hogy engedélyezd:Ubuntu: Másold le a tanúsítványt ,
/usr/share/ca-certificates/nevezd át a kiterjesztését ,.crtés használddpkg-reconfigure ca-certificatesarra, hogy rendszerszintű CA tanúsítványként engedélyezd.RHEL: Másold le a tanúsítványt és
/etc/pki/ca-trust/source/anchors/használdupdate-ca-trustarra, hogy rendszerszintű CA tanúsítványként aktiváld.SUSE: Másold a tanúsítványt a(z)
/usr/share/pki/trust/anchors/helyre, és a(z)update-ca-certificateshasználatával engedélyezd rendszerszintű CA-tanúsítványként.Windows: Importálja a
.pemfájlt tanúsítványként a Current User>Trusted Root Certification Authority>Certificates alatt.macOS:
Másold le a tanúsítványt a
/usr/local/etc/openssl/certs.Futtassa a következő parancsot a kivonat értékének lekéréséhez:
/usr/local/Cellar/openssl/1.0.2l/openssl x509 -hash -in mssql.pem -nooutNevezze át a tanúsítványt a megadott értékre. Használja például a
mv mssql.pem dc2dd900.0. Győződj meg róla, hogydc2dd900.0a(z)/usr/local/etc/openssl/certs-ben van.
Példa kapcsolati sztringekre
Caution
A jelszónak az SQL Server alapértelmezett password szabályzatot kell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.
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;"
Gyakori csatlakozási hibák
| Hibaüzenet | Kijavítás |
|---|---|
The certificate chain was issued by an authority that is not trusted. |
Ez a hiba akkor fordul elő, ha az ügyfelek nem tudják ellenőrizni az SQL Server által a TLS-kézfogás során bemutatott tanúsítvány aláírását. Győződjön meg arról, hogy az ügyfél megbízik közvetlenül az SQL Server-tanúsítványban, vagy az SQL Server-tanúsítványt aláíró hitelesítésszolgáltatóban. |
The target principal name is incorrect. |
Győződj meg róla, hogy az SQL Server tanúsítványán lévő közös névmező egyezik meg a kliens kapcsolati karakterlánc szerver nevével. |
An existing connection was forcibly closed by the remote host. |
Ez a hiba akkor fordulhat elő, ha az ügyfél nem támogatja az SQL Server által igényelt TLS protokollverziót. Ha például az SQL Server úgy van konfigurálva, hogy TLS 1.2-t igényeljen, győződjön meg arról, hogy az ügyfelek támogatják a TLS 1.2 protokollt is. |
Ubuntu 20.04 és egyéb linuxos disztribúciós kiadások
Jelenség
Amikor egy Linux-példányon futó SQL Server betölt egy aláírási algoritmussal létrehozott tanúsítványt, amely kevesebb mint 112 bites biztonságot használ (például: MD5, SHA-1), a következő példához hasonlóan csatlakozási hiba figyelhető meg:
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)
A hiba oka, hogy az OpenSSL 2. biztonsági szintje alapértelmezés szerint engedélyezve van az Ubuntu 20.04-es és újabb verzióiban. A 2. biztonsági szint tiltja a 112 bitesnél kisebb biztonsági szintű TLS-kapcsolatok létrehozását.
Megoldás
Legalább 112 bites biztonságú tanúsítvány telepítése aláírási algoritmussal. A követelménynek megfelelő aláírási algoritmusok közé tartozik az SHA-224, az SHA-256, az SHA-384 és az SHA-512.