Błąd "Certyfikat otrzymany z serwera zdalnego został wystawiony przez niezaufany urząd certyfikacji" podczas nawiązywania połączenia z SQL Server

Ten artykuł ułatwia rozwiązanie problemu występującego podczas próby nawiązania zaszyfrowanego połączenia z serwerem SQL.

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2007728

Symptomy

Podczas łączenia się z serwerem SQL może zostać wyświetlony następujący komunikat o błędzie:

Połączenie z serwerem zostało pomyślnie nawiązane, ale wystąpił błąd podczas procesu logowania. (dostawca: dostawca SSL, błąd: 0 — łańcuch certyfikatów został wystawiony przez urząd, który nie jest zaufany). (.Net SqlClient Dostawca danych)

Ponadto następujący komunikat o błędzie jest rejestrowany w dzienniku zdarzeń systemu Windows

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.

Przyczyna

Ten błąd występuje podczas próby nawiązania zaszyfrowanego połączenia z serwerem SQL przy użyciu certyfikatu, który nie jest weryfikowalny. Może się to zdarzyć w następujących scenariuszach:

Scenariusz Szyfrowanie po stronie serwera Szyfrowanie po stronie klienta Typ certyfikatu Urząd wystawiający certyfikaty obecny w magazynie zaufanych głównych urzędów certyfikacji
1 Tak Nie Aprowizujesz certyfikat z nieu zaufanego źródła (urząd wystawiający certyfikaty nie jest wymieniony jako zaufany urząd w zaufanych głównych urzędach certyfikacji na komputerze klienckim) Nie
2 Wyłączony Tak Serwer SQL wygenerował certyfikat samodzielnie Certyfikaty z podpisem własnym nie są wyświetlane w tym sklepie.

Podczas ustanawiania zaszyfrowanych połączeń z serwerem SQL program bezpieczny kanał (Schannel) tworzy listę zaufanych urzędów certyfikacji, wyszukując magazyn Zaufane główne urzędy certyfikacji na komputerze lokalnym. Podczas uzgadniania protokołu TLS serwer wysyła do klienta swój certyfikat klucza publicznego. Wystawcą certyfikatu klucza publicznego jest urząd certyfikacji (CA). Klient musi upewnić się, że urząd certyfikacji jest zaufany przez klienta. Osiąga się to dzięki wcześniejszej znajomości klucza publicznego zaufanych urzędów certyfikacji. Gdy firma Schannel wykryje certyfikat wystawiony przez niezaufany urząd certyfikacji, na przykład w dwóch poprzednich przypadkach, zostanie wyświetlony komunikat o błędzie wymieniony w sekcji Objawy .

Rozwiązanie

Jeśli celowo używasz certyfikatu z niezaufanego urzędu lub certyfikatu z podpisem własnym do szyfrowania połączeń z serwerem SQL, to możesz użyć jednej z następujących opcji:

W scenariuszu 1 dodaj urząd certyfikacji do magazynu zaufanych głównych urzędów certyfikacji na komputerze klienckim inicjującego zaszyfrowane połączenie. W tym celu ukończ procedurę Eksportowanie certyfikatu serwera i Zainstaluj główny urząd certyfikacji (CA) na maszynie klienckiej wymienionej w kilku następnych sekcjach tej sekwencji.

Eksportowanie certyfikatu serwera

W przykładzie użyto pliku o nazwie caCert.cer jako pliku certyfikatu. Ten plik certyfikatu należy uzyskać z serwera. W poniższych krokach wyjaśniono, jak wyeksportować certyfikat serwera do pliku:

  1. Kliknij przycisk Start, a następnie Uruchom, a następnie wpisz ciąg MMC. (Składnik systemu MMC jest akronimem Konsoli zarządzania firmy Microsoft).

  2. W konsoli składnika MMC otwórz Certyfikaty.

  3. Rozwiń gałąź Osobiste, a następnie gałąź Certyfikaty.

  4. Kliknij prawym przyciskiem myszy certyfikat serwera, a następnie wybierz pozycję Wszystkie zadania-eksport>.

  5. Kliknij przycisk Dalej, aby przejść obok powitalnego okna dialogowego Kreatora eksportu certyfikatów.

  6. Upewnij się , że nie, nie wyeksportuj klucza prywatnego , a następnie wybierz przycisk Dalej.

  7. Upewnij się, że zaznaczono opcje protokołu DER encoded binary X.509 (.CER) lub Base-64 encoded X.509 (.CER), a następnie kliknij przycisk Dalej.

  8. Wprowadź nazwę pliku eksportu.

  9. Kliknij przycisk Dalej, a następnie kliknij przycisk Zakończ, aby wyeksportować certyfikat.

Instalowanie głównego urzędu certyfikacji (CA) na maszynie klienckiej

  1. Uruchom przystawkę Certyfikaty dla programu MMC na komputerze klienckim, a następnie dodaj przystawkę Certyfikaty.

  2. W oknie dialogowym Przystawka Certyfikaty wybierz pozycję Konto komputera , a następnie wybierz pozycję Dalej.

  3. W okienku Wybierz komputer wybierz pozycję Komputer lokalny: (komputer, na który jest uruchomiona ta konsola), a następnie wybierz pozycję Zakończ.

  4. Wybierz przycisk OK , aby zamknąć okno dialogowe Dodawanie lub usuwanie przystawek .

  5. W lewym okienku programu MMC rozwiń węzeł Certyfikaty (komputer lokalny ).

  6. Rozwiń węzeł Zaufane główne urzędy certyfikacji , kliknij prawym przyciskiem myszy podfolder Certyfikaty , wybierz pozycję Wszystkie zadania, a następnie wybierz pozycję Importuj.

  7. W Kreatorze importowania certyfikatów na stronie Powitalnej wybierz pozycję Dalej.

  8. Na stronie Plik do importu wybierz pozycję Przeglądaj.

  9. Przejdź do lokalizacji pliku certyfikatu caCert.cer , wybierz plik, a następnie wybierz pozycję Otwórz.

  10. Na stronie Plik do importu wybierz pozycję Dalej.

  11. Na stronie Magazyn certyfikatów zaakceptuj wybór domyślny, a następnie wybierz pozycję Dalej.

  12. Na stronie Kończenie pracy kreatora importowania certyfikatów wybierz pozycję Zakończ.

W scenariuszach 1 i 2 ustaw ustawienie Certyfikat serwera zaufania na wartość true w aplikacji klienckiej.

Aby uzyskać więcej informacji na ten temat, zobacz następujące tematy:

Uwaga

Jeśli używasz SQL Server Management Studio, wybierz kartę Opcje i wybierz opcję Certyfikat serwera zaufania na karcie Właściwości połączenia.

Ostrożność: Połączenia SSL szyfrowane przy użyciu certyfikatu z podpisem własnym nie zapewniają silnych zabezpieczeń. Są podatne na ataki man-in-the-middle. Nie należy polegać na protokole SSL przy użyciu certyfikatów z podpisem własnym w środowisku produkcyjnym ani na serwerach połączonych z Internetem.

Jeśli konfiguracja omówiona w poprzednich częściach tego artykułu jest niezamierzona, możesz użyć jednej z następujących opcji, aby rozwiązać ten problem:

  • Skonfiguruj aparat bazy danych tak, aby używał szyfrowania zgodnie z procedurą podaną w temacie Włączanie zaszyfrowanych połączeń w silniku bazy danych

  • Jeśli szyfrowanie nie jest wymagane:

    • Wyłącz ustawienia szyfrowania (jeśli istnieją) w aplikacji klienckiej.

    • Wyłącz szyfrowanie po stronie serwera przy użyciu programu SQL Server Configuration Manager. Aby uzyskać więcej informacji na temat tego, jak to zrobić, zobacz Konfigurowanie serwera.