Megosztás:


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. Az SQL Server ugyanazokat a TLS-protokollokat támogatja Windows és Linux rendszeren is: 1.2, 1.1 és 1.0.

Jegyzet

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.

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).

    Jegyzet

    A wildcard 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.

Jegyzet

"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' (,)."

Áttekintés

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.

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.

Vigyázat

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 arról, hogy a tanúsítványok és a titkos kulcsok mentésére szolgáló mappák elérhetők a mssql felhasználó/csoport számára, és hogy az engedélyek 700 (drwx-----) értékre vannak állítva. Manuálisan is létrehozhat mappákat a 700 (drwx------) és a mssql felhasználó/csoport tulajdonában lévő engedélyekkel, vagy beállíthatja, hogy 755 (drwxr-xr-x), amely más felhasználó tulajdonában van, de továbbra is elérhető a mssql felhasználói csoport számára. Létrehozhat például egy sslcert nevű mappát a /var/opt/mssql/elérési út alatt, és mentheti a tanúsítványt és a titkos kulcsot a 600beállítású fájlok engedélyeivel, ahogyan az az alábbi példában látható.

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/

AZ 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 hitelesítésszolgáltató által aláírt tanúsítványt használ, a felhasználói tanúsítvány helyett a hitelesítésszolgáltatói tanúsítványt kell átmásolnia az ügyfélszámítógépre.

  • Ha önaláírt tanúsítványt használ, másolja a .pem fájlt a terjesztési mappába, és hajtsa végre a parancsokat az engedélyezéshez:

  • Ubuntu: Másolja a tanúsítványt /usr/share/ca-certificates/, nevezze át a bővítményét .crt-re, és a dpkg-reconfigure ca-certificates használatával engedélyezze a rendszer hitelesítésszolgáltatói tanúsítványaként.

  • RHEL: Másolja a tanúsítványt /etc/pki/ca-trust/source/anchors/-be, és használja a update-ca-trust-at a rendszer CA tanúsítványként való engedélyezéséhez.

  • SUSE: Másolja a tanúsítványt /usr/share/pki/trust/anchors/-be, és használja a update-ca-certificates-at, hogy engedélyezze azt rendszer hitelesítésszolgáltatói tanúsítványként.

  • Windows: Importálja a .pem fájlt mint tanúsítványt a Jelenlegi felhasználó > Megbízható legfelső szintű hitelesítésszolgáltatók > tanúsítványainakalatt.

  • macOS:

    • Másold a tanúsítványt a /usr/local/etc/openssl/certs-ra

    • 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. Például: mv mssql.pem dc2dd900.0. Győződjön meg arról, hogy dc2dd900.0 benne van /usr/local/etc/openssl/certs-ben.

Példa kapcsolati sztringekre

Vigyázat

A jelszónak az SQL Server alapértelmezett jelszóházirendetkell 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 Javít
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ön meg arról, hogy az SQL Server tanúsítványának Common Name mezője megegyezik az ügyfél kapcsolati sztringjében megadott kiszolgálónévvel.
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

tüneti

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 kiszolgálóval sikeresen létrejött a kapcsolat, de a bejelentkezési folyamat során hiba történt. (szolgáltató: SSL-szolgáltató, hiba: 0 – A távoli gazdagép kényszerítetten bezárt egy meglévő kapcsolatot.) (Microsoft SQL Server, hiba: 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.