Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server sur Linux
SQL Server sur Linux peut utiliser le protocole TLS pour chiffrer des données transmises sur un réseau entre une application cliente et une instance de SQL Server. SQL Server prend en charge les mêmes protocoles TLS sur Windows et Linux : 1.2, 1.1 et 1.0.
Remarque
À compter de SQL Server 2025 (17.x), TLS 1.3 est activé par défaut.
Les étapes de configuration de TLS sont spécifiques au système d’exploitation sur lequel SQL Server est en cours d’exécution.
Conditions requises pour les certificats
Vérifiez que vos certificats respectent ces exigences :
L'heure actuelle du système doit être postérieure à la propriété
Valid fromdu certificat et antérieure à la propriétéValid todu certificat.Le certificat doit être destiné à une authentification serveur. Cela nécessite la propriété
Enhanced Key Usagedu certificat pour spécifierServer Authentication (1.3.6.1.5.5.7.3.1).Le certificat doit être créé à travers l’utilisation de l’option
KeySpecdeAT_KEYEXCHANGE. Habituellement, la propriété d’utilisation de la clé du certificat (KEY_USAGE) inclut également un chiffrement de clé (CERT_KEY_ENCIPHERMENT_KEY_USAGE).La propriété
Subjectdu certificat doit indiquer que le nom courant (CN) est le même que le nom de domaine ou le nom de domaine complet (FQDN, Fully Qualified Domain Name) de l'ordinateur serveur.Remarque
Les certificats utilisant des caractères génériques sont pris en charge.
Configurer des bibliothèques OpenSSL en vue de leur utilisation (facultatif)
Vous pouvez créer dans le répertoire /opt/mssql/lib/ des liens symboliques qui référencent les bibliothèques libcrypto.so et libssl.so à utiliser pour le chiffrement. C’est utile si vous souhaitez forcer SQL Server à utiliser une version spécifique d’OpenSSL autre que la valeur par défaut fournie par le système. En l’absence de ces liens symboliques, SQL Server charge les bibliothèques OpenSSL configurées par défaut sur le système.
Ces liens symboliques doivent être nommés libcrypto.so et libssl.so et placés dans le répertoire /opt/mssql/lib/.
Remarque
Pour obtenir un exemple d’utilisation de Let’s Encrypt pour générer un certificat, consultez le billet de blog Libérer la puissance des données dans Azure avec SQL Server sur des machines virtuelles Azure Linux et Recherche Azure AI.
Vue d’ensemble
Le protocole TLS est utilisé pour chiffrer des connexions d'une application cliente vers SQL Server. Lorsqu’il est configuré correctement, le protocole TLS garantit la confidentialité et l’intégrité des données pour les communications entre le client et le serveur. Les connexions TLS peuvent être lancées par le client ou par le serveur.
La section suivante décrit la configuration du chiffrement initié par le client.
Génération du certificat
/CN doit correspondre au nom de domaine complet de votre hôte SQL Server.
Attention
Cet exemple utilise un certificat auto-signé. Les certificats auto-signésne doivent pas être utilisés dans des scénarios de production. Vous devez utiliser des certificats d’autorité de certification.
Vérifiez que le ou les dossiers dans lesquels vous enregistrez vos certificats et vos clés privées sont accessibles au groupe/à l’utilisateur mssql et que l’autorisation est définie avec la valeur 700 (drwx-----). Vous pouvez créer des dossiers manuellement avec une autorisation égale à 700 (drwx------) et détenue par le groupe/l’utilisateur mssql, ou définir une autorisation égale à 755 (drwxr-xr-x), détenue par un autre utilisateur, mais elle encore accessible au groupe/utilisateur mssql. Par exemple, vous pouvez créer un dossier appelé sslcert sous le chemin d’accès /var/opt/mssql/ et enregistrer le certificat et la clé privée avec des autorisations sur les fichiers définis sur 600, comme illustré dans l’exemple suivant.
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/
Configurer SQL Server
Pour SQL Server 2022 (16.x) et les versions antérieures :
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
Pour 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
Inscrire le certificat sur votre ordinateur client (Windows, Linux ou macOS)
Si vous utilisez un certificat signé par une autorité de certification, vous devez copier le certificat d’autorité de certification au lieu du certificat utilisateur sur l’ordinateur client.
Si vous utilisez le certificat auto-signé, copiez le fichier
.pemdans les dossiers de distribution suivants et exécutez les commandes pour les activer :Ubuntu : copier le certificat dans
/usr/share/ca-certificates/, renommer son extension dans.crtet utiliserdpkg-reconfigure ca-certificatespour l’activer en tant que certificat d’autorité de certification système.RHEL : copier le certificat dans
/etc/pki/ca-trust/source/anchors/et utiliserupdate-ca-trustpour l’activer en tant que certificat d’autorité de certification système.SUSE : copier le certificat dans
/usr/share/pki/trust/anchors/et utiliserupdate-ca-certificatespour l’activer en tant que certificat d’autorité de certification système.Windows : importer le fichier
.pemen tant que certificat sous utilisateur actuel> autorités de certification racines de confiance > certificats.macOS :
Copiez le certificat sur
/usr/local/etc/openssl/certsExécutez la commande suivante pour récupérer la valeur de hachage :
/usr/local/Cellar/openssl/1.0.2l/openssl x509 -hash -in mssql.pem -nooutRenommez le certificat à la valeur. Par exemple :
mv mssql.pem dc2dd900.0. Assurez-vous quedc2dd900.0se trouve dans/usr/local/etc/openssl/certs
Exemples de chaîne de connexion
Attention
Votre mot de passe doit suivre la stratégie de mot de passe par défaut de SQL Server. Par défaut, le mot de passe doit avoir au moins huit caractères appartenant à trois des quatre groupes suivants : lettres majuscules, lettres minuscules, chiffres de base 10 et symboles. Les mots de passe peuvent comporter jusqu'à 128 caractères. Utilisez des mots de passe aussi longs et complexes que possible.
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;"
Erreurs de connexion courantes
| Message d’erreur | Fix |
|---|---|
The certificate chain was issued by an authority that is not trusted. |
Cette erreur se produit lorsque des clients ne peuvent pas vérifier la signature sur le certificat présenté par SQL Server pendant la négociation TLS. Assurez-vous que le client approuve directement le certificat SQL Server ou l’autorité de certification qui a signé le certificat SQL Server. |
The target principal name is incorrect. |
Assurez-vous que le champ Nom commun sur le certificat de SQL Server correspond au nom de serveur spécifié dans la chaîne de connexion du client. |
An existing connection was forcibly closed by the remote host. |
Cette erreur peut se produire lorsque le client ne prend pas en charge la version du protocole TLS requise par SQL Server. Par exemple, si SQL Server est configuré pour exiger TLS 1.2, assurez-vous que vos clients prennent également en charge le protocole TLS 1.2. |
Ubuntu 20.04 et autres versions récentes de la distribution Linux
Symptôme
Lorsqu’une instance SQL Server sur Linux charge un certificat qui a été créé avec un algorithme de signature utilisant moins de 112 bits de sécurité (exemples : MD5, SHA-1), vous pouvez observer une erreur d’échec de connexion, comme dans cet exemple :
Une connexion a été établie avec le serveur, mais une erreur s’est ensuite produite pendant le processus de connexion. (fournisseur : Fournisseur SSL, erreur : 0 - Une connexion existante a été fermée de force par l’hôte distant.) (Microsoft SQL Server, Erreur : 10054)
L’erreur est due à l’activation par défaut du niveau de sécurité OpenSSL 2 sur Ubuntu 20.04 et versions ultérieures. Le niveau de sécurité 2 interdit l’établissement de connexions TLS qui ont moins de 112 bits de sécurité.
Solution
Installez un certificat avec un algorithme de signature utilisant au moins 112 bits de sécurité. Les algorithmes de signature qui répondent à cette exigence incluent SHA-224, SHA-256, SHA-384 et SHA-512.