Felet "Certifikatet som togs emot från fjärrservern utfärdades av en ej betrodd certifikatutfärdare" när du ansluter till SQL Server
Den här artikeln hjälper dig att lösa problemet som uppstår när du försöker upprätta en krypterad anslutning till SQL Server.
Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 2007728
Symptom
När du ansluter till SQL Server kan följande felmeddelande visas:
En anslutning upprättades med servern, men sedan uppstod ett fel under inloggningsprocessen. (provider: SSL-provider, fel: 0 – Certifikatkedjan utfärdades av en utfärdare som inte är betrodd.) (.Net SqlClient Data Provider)
Dessutom loggas följande felmeddelande i händelseloggen Windows System
Log Name: System
Source: Schannel
Date: 10/13/2020 3:03:31 PM
Event ID: 36882
Task Category: None
Level: Error
Keywords:
User: USERNAME
Computer: COMPUTERNAME
Description:
The certificate received from the remote server was issued by an untrusted certificate authority. Because of this, none of the data contained in the certificate can be validated. The TLS connection request has failed. The attached data contains the server certificate.
Orsak
Det här felet uppstår när du försöker upprätta en krypterad anslutning till SQL Server med hjälp av ett icke-verifierbart certifikat. Detta kan inträffa i följande scenarier:
Scenario | Kryptering på serversidan | Kryptering på klientsidan | Certifikattyp | Certifikatutfärdare som finns i arkivet Betrodda rotcertifikatutfärdare |
---|---|---|---|---|
1 | Ja | Nej | Du etablerar ett certifikat från en icke-betrodd källa (certifikatutfärdare visas inte som betrodd utfärdare i Betrodda rotcertifikatutfärdare på klientdatorn) | Nej |
2 | Av | Ja | SQL Server självgenererat certifikat | Självsignerade certifikat visas inte i det här arkivet. |
När du upprättar krypterade anslutningar till SQL Server skapar Secure Channel (Schannel) listan över betrodda certifikatutfärdare genom att söka i arkivet Betrodda rotcertifikatutfärdare på den lokala datorn. Under TLS-handskakningen skickar servern sitt offentliga nyckelcertifikat till klienten. Utfärdaren av ett offentligt nyckelcertifikat kallas certifikatutfärdare (CA). Klienten måste se till att certifikatutfärdaren är någon som klienten litar på. Detta uppnås genom att känna till den offentliga nyckeln för betrodda certifikatutfärdare i förväg. När Schannel identifierar ett certifikat som har utfärdats av en ej betrodd certifikatutfärdare, till exempel i de föregående två fallen, visas felmeddelandet i avsnittet Symptom .
Åtgärd
Om du avsiktligt använder antingen ett certifikat från en icke-betrodd utfärdare eller ett självsignerat certifikat för att kryptera anslutningar till SQL Server kan du använda något av följande alternativ:
För scenario 1 lägger du till certifikatutfärdare i arkivet Betrodda rotcertifikatutfärdare på klientdatorn som initierar krypterad anslutning. Det gör du genom att slutföra exportera servercertifikatet och installera rotcertifikatutfärdare (CA) på de klientdatorprocedurer som anges i de närmaste avsnitten i sekvensen.
Exportera servercertifikatet.
I exemplet används en fil med namnet caCert.cer som en certifikatfil. Du måste hämta certifikatfilen från servern. Följande steg beskriver hur du exporterar servercertifikatet till en fil:
Klicka på Start och sedan på Kör och skriv MMC. (MMC är en förkortning av Microsoft Management Console.)
Öppna Certifikat i MMC.
Visa Personligt och visa sedan Certifikat.
Högerklicka på servercertifikatet och välj sedan Alla uppgifter-Exportera>.
Klicka på Nästa för att gå förbi välkomstdialogrutan i guiden Exportera certifikat.
Bekräfta att Nej, exportera inte den privata nyckeln är markerad och välj sedan Nästa.
Kontrollera att antingen DER-kodad binär X.509 (.CER) eller Base-64-kodad X.509 (.CER) har valts och klicka sedan på Nästa.
Ange ett exportfilnamn.
Klicka på Nästa och klicka sedan på Slutför för att exportera certifikatet.
Installera rotcertifikatutfärdaren (CA) på klientdatorn
Starta snapin-modulen Certifikat för MMC på klientdatorn och lägg sedan till snapin-modulen Certifikat.
I dialogrutan Snapin-modul för certifikat väljer du Datorkonto och sedan Nästa.
I fönstret Välj dator väljer du Lokal dator: (datorn som den här konsolen körs på)och väljer sedan Slutför.
Välj OK för att stänga dialogrutan Lägg till eller ta bort snapin-moduler .
Expandera noden Certifikat (lokal dator) i den vänstra rutan i MMC.
Expandera noden Betrodda rotcertifikatutfärdare, högerklicka på undermappen Certifikat, välj Alla uppgifter och välj sedan Importera.
I guiden Importera certifikat går du till sidan Välkommen och väljer Nästa.
På sidan Fil att importera väljer du Bläddra.
Bläddra till platsen för caCert.cer certifikatfilen, välj filen och välj sedan Öppna.
På sidan Fil att importera väljer du Nästa.
På sidan Certifikatarkiv godkänner du standardvalet och väljer sedan Nästa.
På sidan Slutför guiden Importera certifikat väljer du Slutför.
För scenarier 1 och 2 anger du inställningen Förtroendeservercertifikat till true i klientprogrammet.
Mer information om hur du gör detta finns i följande avsnitt:
Använda kryptering utan validering i SQL Server Native Client
Ansluta med kryptering med hjälp av Microsoft JDBC-drivrutinen för SQL Server
Kommentar
Om du ansluter till SQL Server med SQL Server Management Studio väljer du fliken Alternativ i fönstret Anslut till server och väljer sedan alternativet Förtroendeservercertifikat .
Varning! SSL-anslutningar som krypteras med hjälp av ett självsignerat certifikat ger inte stark säkerhet. De är mottagliga för man-in-the-middle
attacker. Du bör inte förlita dig på SSL med självsignerade certifikat i en produktionsmiljö eller på servrar som är anslutna till Internet.
Om konfigurationen som beskrivs i föregående avsnitt i den här artikeln är oavsiktlig kan du använda något av följande alternativ för att lösa problemet:
Konfigurera databasmotorn att använda kryptering enligt proceduren i Aktivera krypterade anslutningar till databasmotorn
Om kryptering inte krävs:
Inaktivera krypteringsinställningar (om sådana finns) i klientprogrammet.
Inaktivera kryptering på serversidan med konfigurationshanteraren för SQL Server. Mer information om hur du gör detta finns i Konfigurera server.