Fout 'De certificaatketen is uitgegeven door een instantie die niet wordt vertrouwd' na het upgraden van SNAC-toepassingen

Samenvatting

Dit artikel helpt u bij het oplossen van fouten met certificaatketenvertrouwen die optreden wanneer u databasetoepassingen bijwerken van SQL Server Native Client 11.0 (SNAC) naar Microsoft OLE DB-stuurprogramma 19 of Microsoft ODBC-stuurprogramma 18 voor SQL Server.

Wanneer u een upgrade uitvoert van SNAC 11.0 naar nieuwere stuurprogramma's, kunnen uw toepassingen geen verbinding maken met SQL Server met vertrouwensfouten in de certificaatketen. Dit probleem treedt op omdat de nieuwere stuurprogramma's standaard versleuteling inschakelen en certificaatvalidatie vereisen, terwijl SNAC deze standaard heeft uitgeschakeld. Als u de fout wilt oplossen, richt u een certificaat in dat de client vertrouwt of past u de Encrypt, Use Encryption for Dataof TrustServerCertificate verbindingsinstellingen aan, zoals beschreven in dit artikel.

Welk versleutelingswoord van toepassing is op uw stuurprogramma en client

Het trefwoord waarmee versleuteling wordt bepaald, is afhankelijk van het stuurprogramma en hoe uw toepassing de verbindingsreeks bouwt. Als u een trefwoord gebruikt dat het stuurprogramma niet herkent, mislukt de verbinding met de fout 'trefwoord niet ondersteund' in plaats van de certificaatfout.

Stuurprogramma en verbindingsmethode Trefwoord versleuteling Trefwoord certificaatvertrouwen
OLE DB-stuurprogramma 19, providertekenreeks (IDBInitialize::Initialize) Encrypt TrustServerCertificate=yes of no
OLE DB-stuurprogramma 19, ADO of initialisatietekenreeks (IDataInitialize) Use Encryption for Data Trust Server Certificate=true of false
ODBC Driver 18, verbindingsreeks of DSN Encrypt TrustServerCertificate=yes of no
  • OLE DB-stuurprogramma 19: Accepteert Optional, Mandatory (standaard), en Strict. Voor achterwaartse compatibiliteit worden ook de waarden van versie 18 geaccepteerd, waarbij no en false worden toegewezen aan Optional, en yes en true worden toegewezen aan Mandatory.
  • ODBC-stuurprogramma 18: Accepteert no/optional (de standaardinstelling), strictyes/ en mandatory.
  • Provider-strings: Gebruik TrustServerCertificate=yes of TrustServerCertificate=no.
  • ADO- en initialisatietekenreeksen: Gebruiken Trust Server Certificate=true of Trust Server Certificate=false.
  • Strikte modus: Valideert altijd het servercertificaat en negeert de instelling voor certificaatvertrouwen.

Het gebruik van TrustServerCertificate=true in een providertekenreeks kan de foutmelding 'ongeldige waarde' retourneren.

Zie voor de volledige lijsten met trefwoorden Verbindingsreekstrefwoorden gebruiken met OLE DB Driver for SQL Server, Verschillen tussen hoofdversies in MSOLEDBSQL en DSN- en verbindingsreekstrefwoorden en -kenmerken.

Fout, oorzaak van certificaatketen en oplossingen voor OLE DB-stuurprogramma 19 en ODBC-stuurprogramma 18

Selecteer het tabblad voor het stuurprogramma waarnaar u een upgrade hebt uitgevoerd. Elk tabblad bevat het foutbericht dat u ziet, waarom het optreedt en de oplossingen in de aanbevolen volgorde.

Nadat u een upgrade hebt uitgevoerd van SQL Server Native Client 11.0 (Provider=SQLNCLI11) naar Microsoft OLE DB Driver 19 voor SQL Server, kunnen verbindingspogingen mislukken met het volgende foutbericht:

[Microsoft OLE DB-stuurprogramma 19 voor SQL Server]: Client kan geen verbinding tot stand brengen

[Microsoft OLE DB-stuurprogramma 19 voor SQL Server]: SSL-provider: de certificaatketen is uitgegeven door een instantie die niet wordt vertrouwd.

Oorzaak van vertrouwensfout in certificaatketen bij het upgraden naar Microsoft OLE DB-stuurprogramma 19

Deze fout geeft aan dat de clientcomputer de echtheid van het SQL Server-certificaat niet kan verifiëren omdat het is uitgegeven door een certificeringsinstantie (CA) die de client niet vertrouwt.

Deze fouten treden op als aan beide van de volgende voorwaarden wordt voldaan:

  • De instelling Versleuteling afdwingen voor het SQL Server-exemplaar is ingesteld op Nee.

  • De clientverbindingsreeks geeft niet expliciet een waarde op voor de versleutelingseigenschap of de optie Versleuteling is niet expliciet ingesteld of bijgewerkt in de DSN.

De fout treedt op vanwege een wijziging in het standaardgedrag van de clientstuurprogramma's. Bij oudere versies van clientstuurprogramma's wordt ervan uitgegaan dat gegevensversleuteling standaard is uitgeschakeld . Bij de nieuwe stuurprogramma's wordt ervan uitgegaan dat deze instelling standaard is ingeschakeld . Omdat gegevensversleuteling is ingeschakeld, probeert het stuurprogramma het certificaat van de server te valideren en mislukt het.

Oplossingen voor vertrouwensfout in certificaatketen bij het upgraden naar Microsoft OLE DB-stuurprogramma 19

Richt een TLS-certificaat in op het SQL Server exemplaar van een certificeringsinstantie die de client vertrouwt. Zorg ervoor dat de server eventuele vereiste tussencertificaten levert, zodat de client de keten kan bouwen aan een vertrouwde basis-CA. Met deze methode wordt de fout opgelost terwijl versleuteling en certificaatvalidatie is ingeschakeld. Zie SQL Server Database Engine configureren voor het versleutelen van verbindingenvoor meer informatie.

Vertrouw het servercertificaat zonder validatie

Als u niet meteen een verifieerbaar certificaat kunt installeren, geef het stuurprogramma dan op de certificaatvalidatie over te slaan. Het trefwoord dat u gebruikt, is afhankelijk van de wijze waarop uw toepassing de verbindingsreeks bouwt:

  • Voeg in een providertekenreeks toe TrustServerCertificate=yes.
  • Voeg in een ADO- of initialisatietekenreeks toe Trust Server Certificate=true.

Met deze instelling wordt versleuteling niet zelf ingeschakeld. Het geeft aan dat het stuurprogramma certificaatvalidatie overslaat wanneer de verbinding is versleuteld, waardoor de verbinding kwetsbaar blijft voor kwaadwillende aanvallen in het midden. Gebruik deze alleen als tijdelijke meting. In Strict de versleutelingsmodus negeert het stuurprogramma deze instelling en valideert het certificaat altijd.

Notitie

Op dit moment voorkomt MSOLEDBSQL19 het maken van gekoppelde servers zonder versleuteling en een vertrouwd certificaat (een zelfondertekend certificaat is onvoldoende). Als u gekoppelde servers nodig hebt, gebruikt u de bestaande ondersteunde versie van MSOLEDBSQL.

Het versleutelingswoord instellen op Optioneel

Wijzig de versleutelingsinstelling zodat het stuurprogramma geen gevalideerd certificaat nodig heeft. Het trefwoord dat u gebruikt, is afhankelijk van de wijze waarop uw toepassing de verbindingsreeks bouwt:

  • Stel Encrypt=Optionalin een providertekenreeks in.
  • Stel Use Encryption for Data=Optionalin een ADO- of initialisatietekenreeks in.

De standaardwaarde in OLE DB-stuurprogramma 19 is Mandatory. Als de verbindingsreeks al opgeeft Mandatory, yesof true, wijzigt u de waarde in Optional. Als de verbindingsreeks geen waarde opgeeft, voegt u het trefwoord toe. Deze wijziging herstelt het versleutelingsgedrag van versie 18 en vermindert de beveiliging van de verbinding.

Zie Versleuteling en certificaatvalidatie in OLE DB voor meer informatie.

OLE DB-stuurprogramma 18.x gebruiken als tijdelijke meting

Microsoft OLE DB Driver for SQL Server 18.x schakelt versleuteling niet standaard in, dus dit wordt niet beïnvloed door deze wijziging. Behandel deze optie als tijdelijk en plan uw overstap naar OLE DB-stuurprogramma 19. U kunt het stuurprogramma downloaden uit releaseopmerkingen voor het Microsoft OLE DB-stuurprogramma voor SQL Server.