Udostępnij za pośrednictwem


Błędy protokołu SSL są zgłaszane po uaktualnieniu do protokołu TLS 1.2

Ten artykuł zawiera informacje o błędach protokołu SSL (Secure Sockets Layer), które mogą wystąpić po uaktualnieniu do protokołu TLS 1.2 w programie SQL Server. Zawiera również listę metod, za pomocą których można pobrać dane ręcznie. Możesz również uruchomić narzędzie SQLCHECK i przejrzeć informacje w pliku dziennika SQLCHECK .

Symptomy

Rozważmy następujący scenariusz, w którym po uaktualnieniu protokołu TLS do protokołu TLS 1.2 mogą wystąpić następujące problemy.

  • Program Microsoft SQL Server używa certyfikatu podpisanego przez słaby algorytm skrótu. Takie certyfikaty obejmują MD5, SHA224 i SHA512.

  • Uaktualnienia protokołu TLS 1.2 zostały zastosowane tylko do klienta lub serwera, ale nie do obu.

  • Protokół TLS 1.0 jest wyłączony.

  • Nie ma pasujących algorytmów kryptograficznych między klientem a serwerem.

W tym scenariuszu po zakończeniu uaktualniania występują następujące problemy:

  • Problemy wpływające na certyfikat serwera mają również wpływ na połączenia lokalne i połączenia z komputerów klienckich. Aby uzyskać więcej informacji, zobacz Szyfrowanie połączeń z programem SQL Server.

  • Aplikacja może wygenerować jeden z następujących komunikatów o błędach:

    Nazwane potoki

    Połączenie z serwerem zostało pomyślnie nawiązane, ale wystąpił błąd podczas procesu logowania. (dostawca: Dostawca SSL, błąd: 0 — brak procesu na drugim końcu potoku) Microsoft SQL Server, błąd: 233.

    TCP

    Połączenie z serwerem zostało pomyślnie nawiązane, ale wystąpił błąd podczas procesu logowania. (dostawca: Dostawca SSL, błąd: 0 — połączenie zostało wymuszone przez hosta zdalnego 10054) Microsoft SQL Server, błąd: 233.

Jeśli masz przechwytywanie sieci, może to wyglądać podobnie do poniższego zrzutu ekranu pokazującego, że serwer odpowiada na Client Hello pakiet, zamykając połączenie.

Zrzut ekranu przedstawiający przechwytywanie sieci pokazujące, jak serwer reaguje na pakiet Hello klienta.

Rozwiązanie

Aby rozwiązać te problemy, wykonaj te kroki:

  1. Otwórz menedżera konfiguracji programu SQL Server, kliknij prawym przyciskiem myszy pozycję Protokoły dla <wystąpieniaName>, a następnie wybierz polecenie Właściwości.

  2. Wybierz kartę Certyfikat i sprawdź, który certyfikat jest używany.

    Zrzut ekranu przedstawiający kartę Certyfikat pokazujący, który certyfikat jest używany.

    • Jeśli certyfikat istnieje, wybierz pozycję Widok , aby go zbadać, a następnie wybierz pozycję Wyczyść. Następnie przejdź do kroku 4.

    • Jeśli certyfikat nie istnieje, sprawdź plik dziennika błędów programu SQL Server, aby uzyskać kod skrótu. Może zostać wyświetlony jeden z następujących wpisów:

      2023-05-30 14:59:30.89 spid15s The certificate [Cert Hash(sha1) "B3029394BB92AA8EDA0B8E37BAD09345B4992E3D"] was successfully loaded for encryption. lub 2023-05-19 04:58:56.42 spid11s A self-generated certificate was successfully loaded for encryption. Jeśli certyfikat jest generowany samodzielnie, przejdź do kroku 2.

  3. Otwórz magazyn certyfikatów komputera w konsoli zarządzania firmy Microsoft (MMC).

    1. Przejdź do pozycji Certyfikaty osobiste.

    2. Rozwiń kolumnę Przeznaczenie i kliknij dwukrotnie certyfikaty, które są włączone do uwierzytelniania serwera.

    3. Sprawdź, czy odcisk palca jest zgodny z odciskiem palca w pliku dziennika błędów. Jeśli tak nie jest, spróbuj użyć innego certyfikatu.

    4. Sprawdź algorytm skrótu sygnatury. Jeśli jest to MD5, SHA224 lub SHA512, nie będzie obsługiwać protokołu TLS 1.2. Jeśli jest to jeden ze słabych algorytmów, wyłącz uwierzytelnianie serwera, aby program SQL Server nie mógł go używać.

    5. Jeśli certyfikat jest jawnie określony w menedżerze konfiguracji programu SQL Server, wybierz pozycję Wyczyść , aby go usunąć.

    6. Znajdź certyfikat w programie MMC.

    7. W programie MMC kliknij prawym przyciskiem myszy certyfikat, a następnie wybierz polecenie Właściwości.

    8. Na karcie Ogólne wyłącz certyfikat całkowicie lub selektywnie wyłącz uwierzytelnianie serwera.

      Wybierz pozycję Właściwości z programu SQL Server Configuration Manager.

  4. Zapisz zmiany.

  5. Uruchom ponownie program SQL Server.

    Dziennik błędów powinien teraz wskazywać, że jest używany certyfikat wygenerowany samodzielnie. Jeśli problem zostanie rozwiązany, program SQL Server może zostać uruchomiony pomyślnie przy użyciu certyfikatu z podpisem własnym. Jeśli chcesz, aby verisign lub inny certyfikat, musisz poprosić dostawcę certyfikatu, aby upewnić się, że używany jest silny skrót odpowiedni dla protokołu TLS 1.2. Jeśli problem nie został rozwiązany, wróć do kroku 2.

Sprawdzanie włączonych i wyłączonych protokołów TLS

Aby sprawdzić włączone i wyłączone protokoły TLS, wykonaj następujące kroki:

  1. Sprawdź przepływ pracy w tle i podstawowym uaktualnieniu, jeśli jeszcze tego nie zrobiono.

    Aby wymusić protokół TLS 1.2, należy uaktualnić klienta i serwer. Jeśli jest to konieczne, możesz uaktualnić serwer, ale pozostawić włączony protokół TLS 1.0, aby klienci nie uaktualnioni mogli nawiązać połączenia.

  2. Sprawdź rejestr SSL lub TLS przy użyciu regEDIT.

    W podkluczu rejestru można znaleźć włączone i wyłączone wersje protokołu SSL lub TLS:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

    Istnieją podklucze klienta i serwera dla każdej wersji protokołu SSL lub TLS oraz mają wartości Włączone i Wyłączone :

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

    Uwaga 16.

    Każda wartość niezerowa jest traktowana jako PRAWDA. Jednak 1 jest ogólnie preferowane zamiast FFFFFFFF (lub -1).

  3. Upewnij się, że nie ma niezgodnych ustawień.

    Na przykład protokół TLS 1.0 jest wyłączony, a protokół TLS 1.2 jest włączony na serwerze. Wynika to z faktu, że te ustawienia mogą nie być zgodne z ustawieniami klienta lub sterownik klienta może nie zostać zaktualizowany.

    Tę sytuację można przetestować, ustawiając Enabled=0 protokół TLS 1.2 (a także ponownie włącz protokół TLS 1.0, jeśli jest wyłączony).

  4. Uruchom ponownie program SQL Server, aby sprawdzić, czy problem jest związany z protokołem TLS 1.2, czy jest to ogólny problem.

Brak pasujących zestawów szyfrowania

W pakietach i Server Hello można sprawdzić wersje protokołu TLS klienta i serwera oraz zestawy Client Hello szyfrowania. Pakiet Client Hello anonsuje wszystkie pakiety szyfrowania klienta, a Server Hello pakiet określa jeden zestaw szyfrowania. Jeśli nie ma pasujących pakietów, serwer zamyka połączenie zamiast odpowiadać, wysyłając Server Hello pakiet.

Zrzut ekranu przedstawiający szczegóły pakietu szyfrowania, które można sprawdzić, aby określić, czy zestawy są zgodne.

Jeśli ślad sieciowy jest niedostępny, możesz sprawdzić wartość funkcji w następującym podkluczu rejestru:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002

Jeśli nie widzisz pasujących algorytmów, skontaktuj się z pomoc techniczna firmy Microsoft. Aby pomóc inżynierowi pomocy technicznej, przechwyć ślady sieci lub ślady bid zgodnie z opisem w sekcji Advanced SSL Data Capture.