Udostępnij za pośrednictwem


Błąd "Certyfikat odebrany z serwera zdalnego został wystawiony przez niezaufany urząd certyfikacji" podczas nawiązywania połączenia z programem 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 niezauwierzonego ź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łączona Tak Serwer SQL wygenerował certyfikat samodzielnie Certyfikaty z podpisem własnym nie są wyświetlane w tym magazynie.

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 usługa Schannel wykryje certyfikat wystawiony przez niezaufany urząd certyfikacji, taki jak w poprzednich dwóch 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ącym zaszyfrowane połączenie. Aby to zrobić, ukończ eksportowanie certyfikatu serwera i Zainstaluj główny urząd certyfikacji na procedurach komputera klienckiego wymienionych 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. (MMC to skrót od Microsoft Management Console.)

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

  3. Rozwiń pozycję Osobiste, a następnie pozycję Certyfikaty.

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

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

  6. Upewnij się, że wybrano pozycję Nie, nie eksportuj 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 przystawki Certyfikaty wybierz pozycję Konto komputera, a następnie wybierz przycisk Dalej.

  3. W okienku Wybierz komputer wybierz pozycję Komputer lokalny: (komputer, na którym działa 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 polecenie Importuj.

  7. W Kreatorze importowania certyfikatów na stronie Powitanie 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 przycisk 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 temat tego, jak to zrobić, zobacz następujące tematy:

Uwaga 16.

Jeśli łączysz się z programem SQL Server za pomocą programu SQL Server Management Studio, wybierz kartę Opcje w oknie Łączenie z serwerem , a następnie wybierz opcję Certyfikat serwera zaufania.

Uwaga: 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.