Sql Server-kapcsolatok titkosítása Linuxon

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 from tulajdonsága és a tanúsítvány Valid to tulajdonsá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 Usage tulajdonságának meg kell adnia Server Authentication (1.3.6.1.5.5.7.3.1)-et ehhez.

  • A tanúsítványt a KeySpecAT_KEYEXCHANGE lehető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 Subject tulajdonsá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 .pem fá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áld dpkg-reconfigure ca-certificates arra, 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áld update-ca-trust arra, 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-certificates használatával engedélyezd rendszerszintű CA-tanúsítványként.

    • Windows: Importálja a .pem fá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 -noout
        
      • Nevezze á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, hogy dc2dd900.0 a(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

    Képernyőkép az SQL Server Management Studio kapcsolati párbeszédpaneléről.

  • 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;"

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.