Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server op Linux
SQL Server op Linux kan TLS (Transport Layer Security) gebruiken om gegevens te versleutelen die via een netwerk worden verzonden tussen een clienttoepassing en een exemplaar van SQL Server.
Ondersteuning van het besturingssysteem
SQL Server ondersteunt dezelfde TLS-protocollen op zowel Windows als Linux: 1.3, 1.2, 1.1 en 1.0.
Vanaf SQL Server 2025 (17.x):
- TLS 1.3 is standaard ingeschakeld
- SUSE Linux Enterprise Server (SLES) wordt niet ondersteund
De stappen voor het configureren van TLS zijn specifiek voor het besturingssysteem waarop SQL Server wordt uitgevoerd.
Note
TLS wordt niet ondersteund voor AlwaysOn-beschikbaarheidsgroepdatabasespiegelingseindpunten.
Vereisten voor certificaten
Zorg ervoor dat uw certificaten aan deze vereisten voldoen:
De huidige systeemtijd moet na de
Valid fromeigenschap van het certificaat en vóór de eigenschapValid tovan het certificaat zijn.Het certificaat moet zijn bedoeld voor serververificatie. Hiervoor is de
Enhanced Key Usageeigenschap van het certificaat vereist omServer Authentication (1.3.6.1.5.5.7.3.1)op te geven.Het certificaat moet worden gemaakt met behulp van de optie
KeySpecvanAT_KEYEXCHANGE. Meestal bevat de eigenschap sleutelgebruik van het certificaat (KEY_USAGE) ook sleutelcodering (CERT_KEY_ENCIPHERMENT_KEY_USAGE).De eigenschap
Subjectvan het certificaat moet aangeven dat de algemene naam (CN) gelijk is aan de hostnaam of FQDN (Fully Qualified Domain Name) van de servercomputer.Note
Wildcard-certificaten worden ondersteund.
De OpenSSL-bibliotheken configureren voor gebruik (optioneel)
U kunt symbolische koppelingen maken in de /opt/mssql/lib/ map die verwijst naar welke libcrypto.so en libssl.so bibliotheken moeten worden gebruikt voor versleuteling. Dit is handig als u wilt afdwingen dat SQL Server een andere versie van OpenSSL gebruikt dan de standaardversie van het systeem. Als deze symbolische koppelingen niet aanwezig zijn, laadt SQL Server de standaard geconfigureerde OpenSSL-bibliotheken op het systeem.
Deze symbolische koppelingen moeten libcrypto.so en libssl.so worden genoemd en in de map /opt/mssql/lib/ worden geplaatst.
Note
Voor een voorbeeld van het gebruik van Let's Encrypt om een certificaat te genereren, raadpleegt u het blogbericht De kracht van gegevens in Azure ontgrendelen met SQL Server op Virtuele Linux Azure-machines en Azure AI search.
Overview
TLS wordt gebruikt om verbindingen van een clienttoepassing met SQL Server te versleutelen. Wanneer TLS correct is geconfigureerd, biedt TLS zowel privacy als gegevensintegriteit voor communicatie tussen de client en de server. TLS-verbindingen kunnen worden geïnitieerd door de client of de server.
Note
TLS wordt niet ondersteund voor AlwaysOn-beschikbaarheidsgroepdatabasespiegelingseindpunten.
In de volgende sectie wordt beschreven hoe u door de client geïnitieerde versleuteling instelt.
Certificaat genereren
/CN moet overeenkomen met de volledig gekwalificeerde domeinnaam van uw SQL Server-host.
Caution
In dit voorbeeld wordt een zelfondertekend certificaat gebruikt. Zelfondertekende certificaten mogen niet worden gebruikt voor productiescenario's. U moet CA-certificaten gebruiken.
Zorg ervoor dat de mappen waarin je je certificaten en privésleutels opslaat toegankelijk zijn voor de mssql gebruiker of groep en dat de rechten zijn ingesteld op 700 (drwx------). Je kunt handmatig mappen aanmaken met permissies ingesteld op 700 (drwx------) en eigendom van de mssql gebruiker of groep. Stel de rechten in op 755 (drwxr-xr-x) en zorg dat de mappen toegankelijk zijn voor de mssql groep. Je kunt bijvoorbeeld een map met de naam /var/opt/mssql/ aanmaken onder het pad sslcert en het certificaat en de private sleutel opslaan, waarbij de bestandsmachtigingen zijn ingesteld op 600, zoals in het volgende voorbeeld wordt getoond.
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 configureren
Voor SQL Server 2022 (16.x) en eerdere versies:
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
Voor 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
Het certificaat registreren op uw clientcomputer (Windows, Linux of macOS)
Als je een CA-ondertekend certificaat gebruikt, kopieer dan het certificaat van de Certificaatautoriteit (CA) in plaats van het gebruikerscertificaat naar de clientmachine.
Als je het zelfondertekende certificaat gebruikt, kopieer het
.pembestand dan naar de map voor je distributie en voer het commando uit om het in te schakelen:Ubuntu: Kopieer het certificaat naar
/usr/share/ca-certificates/, hernoem de extensie naar.crt, en gebruikdpkg-reconfigure ca-certificateshet om het in te schakelen als een systeem-CA-certificaat.RHEL: Kopieer het certificaat naar
/etc/pki/ca-trust/source/anchors/en gebruikupdate-ca-trusthet om het als systeem-CA-certificaat in te schakelen.SUSE: Kopieer het certificaat naar
/usr/share/pki/trust/anchors/en gebruikupdate-ca-certificateshet om het als een systeem-CA-certificaat in te schakelen.Windows: Importeer het
.pembestand als een certificaat onder Huidige gebruiker>Vertrouwde basiscertificeringsinstanties>Certificaten.macOS:
Kopieer het certificaat naar
/usr/local/etc/openssl/certs.Voer de volgende opdracht uit om de hashwaarde op te halen:
/usr/local/Cellar/openssl/1.0.2l/openssl x509 -hash -in mssql.pem -nooutHernoem het certificaat naar de waarde. Gebruik bijvoorbeeld
mv mssql.pem dc2dd900.0. Zorg datdc2dd900.0er in/usr/local/etc/openssl/certszit.
Voorbeeld van verbindingsreeksen
Caution
Uw wachtwoord moet het SQL Server standaardbeleid voor password volgen. Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.
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;"
Veelvoorkomende verbindingsfouten
| Foutmelding | Repareren |
|---|---|
The certificate chain was issued by an authority that is not trusted. |
Deze fout treedt op wanneer clients de handtekening niet kunnen controleren op het certificaat dat door SQL Server wordt gepresenteerd tijdens de TLS-handshake. Zorg ervoor dat de client het SQL Server-certificaat rechtstreeks vertrouwt of de CA die het SQL Server-certificaat heeft ondertekend. |
The target principal name is incorrect. |
Zorg ervoor dat het veld voor de gemeenschappelijke naam op het certificaat van SQL Server overeenkomt met de servernaam die in de verbindingsreeks van de client is vermeld. |
An existing connection was forcibly closed by the remote host. |
Deze fout kan optreden wanneer de client geen ondersteuning biedt voor de TLS-protocolversie die is vereist voor SQL Server. Als SQL Server bijvoorbeeld is geconfigureerd om TLS 1.2 te vereisen, moet u ervoor zorgen dat uw clients ook het TLS 1.2-protocol ondersteunen. |
Ubuntu 20.04 en andere recente Linux-distributieversies
Symptoom
Wanneer een SQL Server op een Linux-exemplaar een certificaat laadt dat is gemaakt met een handtekeningalgoritme met minder dan 112 bits van beveiliging (voorbeelden: MD5, SHA-1), kan er een verbindingsfout optreden, zoals in dit voorbeeld:
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)
De fout wordt veroorzaakt doordat OpenSSL-beveiligingsniveau 2 standaard is ingeschakeld op Ubuntu 20.04 en nieuwere versies. Met beveiligingsniveau 2 kunnen TLS-verbindingen met minder dan 112 bits niet tot stand worden gebracht.
Solution
Installeer een certificaat met een handtekening-algoritme met ten minste 112 bits aan beveiliging. Handtekeningalgoritmen die voldoen aan deze vereiste zijn SHA-224, SHA-256, SHA-384 en SHA-512.