Partage via


Exigences des certificats pour SQL Server

Cet article décrit les exigences des certificats pour le chiffrement SQL Server et comment vérifier si un certificat répond à ces exigences.

Exigences des certificats pour le chiffrement SQL Server

Pour utiliser TLS pour le chiffrement SQL Server, vous devez provisionner un certificat (d’un des trois types numériques) qui remplit les conditions suivantes :

  • Le certificat doit se trouver dans le magasin de certificats de l’ordinateur local ou dans le magasin de certificats du compte de service SQL Server. Nous recommandons le magasin de certificats de l’ordinateur local, car il évite de reconfigurer les certificats en fonction des modifications du compte de démarrage de SQL Server.

  • Le compte de service SQL Server doit avoir l’autorisation nécessaire pour accéder au certificat TLS. Pour plus d’informations, consultez Configurer le moteur de base de données SQL Server pour le chiffrement des connexions.

  • L’heure actuelle du système doit être postérieure à la valeur de la propriété Valide à partir du et antérieure à la valeur de la propriété Valide jusqu’au du certificat. Pour plus d’informations, consultez Certificats expirés.

    Notes

    Le certificat doit être destiné à une authentification serveur. Pour cela, la propriété Utilisation améliorée de la clé du certificat doit indiquer l’authentification du serveur (1.3.6.1.5.5.7.3.1) .

  • Le certificat doit être créé en utilisant l’option KeySpec de AT_KEYEXCHANGE. Ceci nécessite un certificat qui utilise un fournisseur de stockage de chiffrement hérité pour stocker la clé privée. Habituellement, la propriété d’utilisation de la clé du certificat (KEY_USAGE) inclut également un chiffrement de clé (CERT_KEY_ENCIPHERMENT_KEY_USAGE) et une signature numérique (CERT_DIGITAL_SIGNATURE_KEY_USAGE).

  • La propriété Subject du 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. Quand vous utilisez le nom d'hôte, le suffixe DNS doit être spécifié dans le certificat. Si SQL Server s’exécute sur un cluster de basculement, le nom courant doit correspondre au nom d’hôte (ou FQDN) du serveur virtuel, et les certificats doivent être provisionnés sur tous les nœuds dans le cluster de basculement. Par exemple, si vous avez un cluster à deux nœuds nommés test1.*<your company>*.com et test2.*<your company>*.com ainsi qu’un serveur virtuel nommé virtsql, vous devez installer un certificat pour virtsql.*<your company>*.com sur les deux nœuds. Pour plus d’informations sur les clusters SQL, consultez Avant l’installation du clustering de basculement.

  • Lors de la connexion à un écouteur de groupe de disponibilité, les certificats provisionnés pour chaque nœud de serveur participant dans le cluster de basculement doivent également avoir une liste de tous les écouteurs de groupe de disponibilité définis dans le champ Autre nom de l’objet du certificat. Pour plus d’informations, consultez Écouteurs et certificats TLS/SSL. Pour plus d’informations sur SQL Always On, consultez Se connecter à un écouteur de groupe de disponibilité Always On.

  • La valeur de Autre nom de l’objet doit inclure tous les noms que vos clients peuvent utiliser pour se connecter à une instance SQL Server. Si vous utilisez des groupes de disponibilité, l’autre nom de l’objet doit inclure le NetBIOS (Network Basic Input/Output System) et le nom de domaine complet (FQDN) de localhost et des écouteurs créés.

Le client doit être en mesure de vérifier la propriété du certificat employé par le serveur. Si le client dispose du certificat de clé publique de l'autorité de certification qui a signé le certificat de serveur, aucune configuration supplémentaire n'est requise. Microsoft Windows comprend les certificats de clé publique d'un grand nombre d'autorités de certification. Si le certificat de serveur a été signé par une autorité de certification publique ou privée pour laquelle le client n’a pas de certificat de clé publique, vous devez installer le certificat de clé publique de l’autorité de certification qui a signé le certificat de serveur sur chaque client qui va se connecter à SQL Server.

Important

SQL Server ne va pas démarrer si un certificat existe dans le magasin de l’ordinateur, mais qu’il répond seulement à certaines exigences de la liste ci-dessus, et s’il est configuré manuellement pour une utilisation par le Gestionnaire de configuration SQL Server ou via des entrées de Registre. Sélectionnez un autre certificat qui répond à toutes les exigences ou supprimez l’utilisation du certificat par SQL Server jusqu’à ce que vous puissiez en provisionner un qui répond aux exigences, ou utilisez un certificat auto-généré, comme expliqué dans Certificats auto-signés générés par SQL Server.

Vérifier si un certificat répond aux exigences

Dans SQL Server 2019 (15.x) et versions ultérieures, le Gestionnaire de configuration SQL Server valide automatiquement toutes les exigences de certificat pendant la phase de configuration elle-même. Si SQL Server démarre correctement après que vous avez configuré un certificat, c’est une bonne indication quant au fait que SQL Server peut utiliser ce certificat. Cependant, certaines applications clientes peuvent néanmoins avoir d’autres exigences pour les certificats qui peuvent être utilisés pour le chiffrement, et vous pouvez rencontrer des erreurs différentes en fonction de l’application utilisée. Dans ce scénario, vous devez consulter la documentation de support de l’application cliente pour plus d’informations sur le sujet.

Vous pouvez utiliser une des méthodes suivantes pour vérifier la validité du certificat à utiliser avec SQL Server :

  • Outil sqlcheck : sqlcheck est un outil en ligne de commande qui examine les paramètres actuels de l’ordinateur et du compte de service, et produit un rapport texte dans la fenêtre Console qui est utile pour résoudre différentes erreurs de connexion. La sortie contient les informations suivantes concernant les certificats :

    Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.).
    
    Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.
    

    Pour plus d’informations sur les fonctionnalités de l’outil et pour obtenir des instructions de téléchargement, consultez Bienvenue dans le wiki CSS_SQL_Networking_Tools.

  • Outil certutil : certutil.exe est un programme en ligne de commande, installé dans le cadre des services de certificat. Vous pouvez utiliser certutil.exe pour extraire et afficher les informations des certificats. Utilisez l’option -v pour obtenir des informations détaillées. Pour plus d'informations, consultez certutil.

  • Composant logiciel enfichable Certificats : vous pouvez aussi utiliser la fenêtre Composant logiciel enfichable Certificats pour voir plus d’informations sur les certificats dans les différents magasins de certificats sur l’ordinateur. Cet outil ne montre cependant pas d’informations sur KeySpec. Pour plus d’informations sur la visualisation des certificats avec le composant logiciel enfichable MMC, consultez Guide pratique pour visualiser des certificats avec le composant logiciel enfichable MMC.

Plus d’informations

Certificats expirés

SQL Server vérifie seulement la validité des certificats au moment de la configuration. Par exemple, vous ne pouvez pas utiliser le Gestionnaire de configuration sur SQL Server 2019 (15.x) et versions ultérieures pour provisionner un certificat expiré. SQL Server continuera de s’exécuter sans problème si le certificat expire alors qu’il est déjà provisionné. Cependant, certaines applications clientes, comme Power BI, vérifient la validité du certificat sur chaque connexion et génèrent une erreur si l’instance SQL Server est configurée afin d’utiliser un certificat expiré pour le chiffrement. Nous vous recommandons de ne pas utiliser de certificat expiré pour le chiffrement SQL Server.