« La chaîne de certificats a été émise par une autorité qui n’est pas approuvée » après la mise à niveau des applications SNAC

Résumé

Cet article vous aide à résoudre les erreurs d’approbation de chaîne de certificats qui se produisent lorsque vous mettez à niveau des applications de base de données de SQL Server Native Client 11.0 (SNAC) vers Microsoft OLE DB Driver 19 ou Microsoft ODBC Driver 18 pour SQL Server.

Lorsque vous effectuez une mise à niveau de SNAC 11.0 vers des pilotes plus récents, vos applications peuvent ne pas se connecter à SQL Server avec des erreurs d’approbation de chaîne de certificats. Ce problème se produit parce que les pilotes plus récents activent le chiffrement par défaut et nécessitent une validation de certificat, tandis que le SNAC l’a désactivé par défaut. Pour corriger l’erreur, provisionnez un certificat approuvé par le client, ou ajustez les Encryptparamètres de connexion ou TrustServerCertificate les Use Encryption for Dataparamètres de connexion, comme décrit dans cet article.

Quel mot clé de chiffrement s’applique à votre pilote et à votre client

Le mot clé qui contrôle le chiffrement dépend du pilote et de la façon dont votre application génère son chaîne de connexion. Si vous utilisez un mot clé que le pilote ne reconnaît pas, la connexion échoue avec une erreur « mot clé non pris en charge » au lieu de l’erreur de certificat.

Méthode de pilote et de connexion Mot clé de chiffrement Mot clé de confiance du certificat
OLE DB Driver 19, chaîne de fournisseur (IDBInitialize::Initialize) Encrypt TrustServerCertificate=yes ou no
OLE DB Driver 19, ADO ou chaîne d’initialisation (IDataInitialize) Use Encryption for Data Trust Server Certificate=true ou false
Pilote ODBC 18, chaîne de connexion ou DSN Encrypt TrustServerCertificate=yes ou no
  • OLE DB Driver 19 : Accepte Optional, Mandatory (par défaut) et Strict. Pour assurer la compatibilité descendante, il accepte également les valeurs de la version 18, où no et Optional correspondent à yes, et true et Mandatory correspondent à false.
  • Pilote ODBC 18 : Accepte yes/mandatory (la valeur par défaut),/nooptional et .strict
  • Chaînes de fournisseur : Utiliser TrustServerCertificate=yes ou TrustServerCertificate=no.
  • Chaînes d’initialisation et ADO : Utiliser Trust Server Certificate=true ou Trust Server Certificate=false.
  • Mode strict : Valide toujours le certificat de serveur et ignore le paramètre d’approbation de certificat.

L’utilisation TrustServerCertificate=true dans une chaîne de fournisseur peut retourner une erreur de valeur non valide.

Pour obtenir les listes complètes de mots clés, consultez Utilisation des mots clés de chaîne de connexion avec OLE DB Driver pour SQL Server, Différences entre les versions majeures de MSOLEDBSQL et Mots clés et attributs de DSN et de chaîne de connexion.

Erreur de chaîne de certificats, cause et solutions pour OLE DB Driver 19 et ODBC Driver 18

Sélectionnez l’onglet du pilote vers lequel vous avez effectué la mise à niveau. Chaque onglet affiche le message d’erreur que vous voyez, pourquoi il se produit et les solutions dans l’ordre recommandé.

Après la mise à niveau de SQL Server Native Client 11.0 (Provider=SQLNCLI11) vers Microsoft OLE DB Driver 19 pour SQL Server, les tentatives de connexion peuvent échouer avec le message d’erreur suivant :

[Microsoft OLE DB Driver 19 pour SQL Server] : le client ne peut pas établir de connexion

[Microsoft OLE DB Driver 19 pour SQL Server] : Fournisseur SSL : La chaîne de certificats a été émise par une autorité qui n’est pas approuvée.

Cause de l’erreur d’approbation de chaîne de certificats lors de la mise à niveau vers Microsoft OLE DB Driver 19

Cette erreur indique que l’ordinateur client ne peut pas vérifier l’authenticité du certificat SQL Server, car il a été émis par une autorité de certification que le client n’approuve pas.

Ces erreurs se produisent si les deux conditions suivantes sont remplies :

  • Le paramètre Forcer le chiffrement de l’instance SQL Server est défini sur Non.

  • La chaîne de connexion cliente ne spécifie pas explicitement de valeur pour la propriété de chiffrement, ou l’option Chiffrement n’a pas été définie ou mise à jour explicitement dans le DSN.

L’erreur se produit en raison d’une modification du comportement par défaut des pilotes clients. Les versions antérieures des pilotes clients supposent que le chiffrement des données est DÉSACTIVÉ par défaut. Les nouveaux pilotes supposent que ce paramètre est ACTIVÉ par défaut. Étant donné que le chiffrement des données est ACTIVÉ, le pilote tente de valider le certificat du serveur et échoue.

Solutions pour l'erreur de confiance dans la chaîne de certificats lors de la mise à niveau vers Microsoft OLE DB Driver 19

Provisionnez un certificat TLS sur l’instance SQL Server à partir d’une autorité de certification approuvée par le client. Assurez-vous que le serveur fournit tous les certificats intermédiaires requis afin que le client puisse générer la chaîne vers une autorité de certification racine approuvée. Cette approche résout l’erreur tout en gardant le chiffrement et la validation des certificats activés. Pour plus d’informations, consultez Configurer le moteur de base de données SQL Server pour le chiffrement des connexions.

Approuver le certificat de serveur sans validation

Si vous ne pouvez pas provisionner immédiatement un certificat vérifiable, indiquez au pilote d’ignorer la validation des certificats. Le mot clé que vous utilisez dépend de la façon dont votre application génère l’chaîne de connexion :

  • Dans une chaîne du fournisseur, ajoutez TrustServerCertificate=yes.
  • Dans une chaîne ADO ou d’initialisation, ajoutez Trust Server Certificate=true.

Ce paramètre n’active pas le chiffrement lui-même. Il indique au pilote d’ignorer la validation des certificats lorsque la connexion est chiffrée, ce qui laisse la connexion vulnérable aux attaques de l’adversaire dans le milieu. Utilisez-la uniquement comme mesure temporaire. En Strict mode de chiffrement, le pilote ignore ce paramètre et valide toujours le certificat.

Note

Actuellement, MSOLEDBSQL19 empêche la création de serveurs liés sans chiffrement et sans certificat approuvé (un certificat auto-signé est insuffisant). Si vous avez besoin de serveurs liés, utilisez la version prise en charge existante de MSOLEDBSQL.

Définir le mot clé de chiffrement sur Facultatif

Modifiez le paramètre de chiffrement afin que le pilote ne nécessite pas de certificat validé. Le mot clé que vous utilisez dépend de la façon dont votre application génère l’chaîne de connexion :

  • Dans une chaîne du fournisseur, définissez Encrypt=Optional.
  • Dans une chaîne ADO ou d’initialisation, définissez Use Encryption for Data=Optional.

La valeur par défaut dans OLE DB Driver 19 est Mandatory. Si la chaîne de connexion spécifie déjà Mandatory, yes ou true, remplacez la valeur par Optional. Si le chaîne de connexion ne spécifie pas de valeur, ajoutez le mot clé. Cette modification restaure le comportement de chiffrement de la version 18 et réduit la sécurité de la connexion.

Pour plus d’informations, consultez Chiffrement et validation de certificat dans OLE DB.

Utiliser OLE DB Driver 18.x comme mesure temporaire

Microsoft OLE DB Driver pour SQL Server 18.x n'active pas le chiffrement par défaut. Il n'est donc pas affecté par cette modification. Traitez cette option comme temporaire et planifiez votre déplacement vers OLE DB Driver 19. Vous pouvez télécharger le pilote depuis Notes de publication du Microsoft OLE DB Driver pour SQL Server.