Delen via


SSL-fouten worden gerapporteerd na een upgrade naar TLS 1.2

Dit artikel bevat informatie over de SSL-fouten (Secure Sockets Layer) die u kunt tegenkomen nadat u een upgrade naar TLS 1.2 in SQL Server hebt uitgevoerd. Ook worden de methoden vermeld waarmee u de gegevens handmatig kunt ophalen. U kunt ook het HULPPROGRAMMA SQLCHECK uitvoeren en de informatie controleren in het SQLCHECK-logboekbestand .

Symptomen

Houd rekening met het volgende scenario waarin u mogelijk de volgende problemen ziet nadat u het TLS-protocol hebt bijgewerkt naar TLS 1.2.

  • Microsoft SQL Server maakt gebruik van een certificaat dat is ondertekend door een zwak hash-algoritme. Dergelijke certificaten omvatten MD5, SHA224 en SHA512.

  • TLS 1.2-upgrades zijn alleen toegepast op de client of de server, maar niet op beide.

  • TLS 1.0 is uitgeschakeld.

  • Er zijn geen overeenkomende cryptografische algoritmen tussen de client en de server.

In dit scenario ondervindt u de volgende problemen nadat de upgrade is voltooid:

  • Problemen die van invloed zijn op het servercertificaat hebben ook invloed op lokale verbindingen en verbindingen van clientcomputers. Zie Versleuteling van verbindingen met SQL Server voor meer informatie.

  • De toepassing kan een van de volgende foutberichten genereren:

    Named Pipes

    Er is een verbinding tot stand gebracht met de server, maar er is een fout opgetreden tijdens het aanmeldingsproces. (provider: SSL-provider, fout: 0 - Geen proces aan het andere uiteinde van de pijp) Microsoft SQL Server, fout: 233.

    TCP

    Er is een verbinding tot stand gebracht met de server, maar er is een fout opgetreden tijdens het aanmeldingsproces. (provider: SSL-provider, fout: 0 - De verbinding is geforceerd gesloten door externe host 10054) Microsoft SQL Server, fout: 233.

Als u een netwerkopname hebt, kan deze lijken op de volgende schermopname die laat zien dat de server reageert op het Client Hello pakket door de verbinding te sluiten.

Schermopname van een netwerkopname die laat zien hoe de server reageert op het Client Hello-pakket.

Oplossing

Volg deze stappen om deze fouten te verhelpen:

  1. Open SQL Server Configuration Manager, klik met de rechtermuisknop op Protocollen voor <InstanceName> en selecteer Vervolgens Eigenschappen.

  2. Selecteer het tabblad Certificaat en controleer welk certificaat wordt gebruikt.

    Schermopname van het tabblad Certificaat waarin wordt weergegeven welk certificaat wordt gebruikt.

    • Als er een certificaat bestaat, selecteert u Weergeven om het te onderzoeken en selecteert u Wissen. Ga vervolgens naar stap 4.

    • Als er geen certificaat bestaat, controleert u het sql Server-foutenlogboekbestand om de hashcode op te halen. Mogelijk ziet u een van de volgende vermeldingen:

      2023-05-30 14:59:30.89 spid15s The certificate [Cert Hash(sha1) "B3029394BB92AA8EDA0B8E37BAD09345B4992E3D"] was successfully loaded for encryption. of 2023-05-19 04:58:56.42 spid11s A self-generated certificate was successfully loaded for encryption. Als het certificaat zelf is gegenereerd, gaat u verder met stap 2.

  3. Open het certificaatarchief van de computer in de Microsoft Management Console (MMC).

    1. Navigeer naar persoonlijke certificaten.

    2. Vouw de kolom Beoogde doeleinden uit en dubbelklik op certificaten die zijn ingeschakeld voor serververificatie.

    3. Controleer of de vingerafdruk overeenkomt met de vingerafdruk in het foutenlogboekbestand. Als dat niet het probleem is, kunt u een ander certificaat proberen.

    4. Controleer het hash-algoritme van de handtekening. Als het MD5, SHA224 of SHA512 is, wordt TLS 1.2 niet ondersteund. Als het een van de zwakke algoritmen is, schakelt u Serververificatie uit zodat SQL Server deze niet kan gebruiken.

    5. Als het certificaat expliciet is opgegeven in SQL Server Configuration Manager, selecteert u Wissen om het te verwijderen.

    6. Zoek het certificaat in MMC.

    7. Klik in MMC met de rechtermuisknop op het certificaat en selecteer Vervolgens Eigenschappen.

    8. Schakel op het tabblad Algemeen het certificaat volledig uit of schakel serververificatie selectief uit.

      Selecteer Eigenschappen in SQL Server Configuration Manager.

  4. De wijzigingen opslaan.

  5. Start SQL Server opnieuw op.

    In het foutenlogboek moet nu worden aangegeven dat er een zelf gegenereerd certificaat wordt gebruikt. Als het probleem is opgelost, kan SQL Server worden uitgevoerd met behulp van het zelfondertekende certificaat. Als u een Verisign- of ander certificaat wilt, moet u de certificaatprovider vragen om ervoor te zorgen dat een sterke hash wordt gebruikt die geschikt is voor TLS 1.2. Als het probleem niet is opgelost, gaat u terug naar stap 2.

Ingeschakelde en uitgeschakelde TLS-protocollen controleren

Volg deze stappen om de ingeschakelde en uitgeschakelde TLS-protocollen te controleren:

  1. Controleer de werkstroom achtergrond- en basisupgrade als u dit nog niet hebt gedaan.

    Zowel de client als de server moeten worden bijgewerkt om TLS 1.2 af te dwingen. Als dit nodig is, kunt u de server upgraden, maar TLS 1.0 ingeschakeld laten zodat niet-bijgewerkte clients verbinding kunnen maken.

  2. Controleer het SSL- of TLS-register met behulp van REGEDIT.

    U vindt de ingeschakelde en uitgeschakelde SSL- of TLS-versies onder de volgende registersubsleutel:

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

    Er zijn client- en serversubsleutels voor elke versie van SSL of TLS, en beide hebben ingeschakelde en uitgeschakelde waarden:

    [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

    Notitie

    Elke waarde die niet nul is, wordt beschouwd als TRUE. 1 heeft echter de voorkeur in plaats van FFFFFFFFFF (of -1).

  3. Zorg ervoor dat er geen incompatibele instellingen zijn.

    TLS 1.0 is bijvoorbeeld uitgeschakeld en TLS 1.2 is ingeschakeld op de server. Dit komt doordat deze instellingen mogelijk niet overeenkomen met de instellingen op de client of het clientstuurprogramma mogelijk niet worden bijgewerkt.

    U kunt deze situatie testen door de instelling Enabled=0 voor TLS 1.2 (en ook TLS 1.0 opnieuw in te schakelen als deze is uitgeschakeld).

  4. Start SQL Server opnieuw om te controleren of het probleem te maken heeft met TLS 1.2 of dat het een algemeen probleem is.

Geen overeenkomende coderingssuites

U kunt de TLS-versies en coderingssuites van de client en server in de Client Hello en Server Hello pakketten onderzoeken. Het Client Hello pakket adverteert alle client-coderingssuites en het Server Hello pakket specificeert één coderingssuite. Als er geen overeenkomende suites zijn, sluit de server de verbinding in plaats van te reageren door het Server Hello pakket te verzenden.

Schermopname van details van coderingssuites die u kunt onderzoeken om te bepalen of de suites overeenkomen.

Als een netwerktracering niet beschikbaar is, kunt u de functiewaarde controleren onder de volgende registersubsleutel:

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

Als u geen overeenkomende algoritmen ziet, neemt u contact op met Microsoft Ondersteuning. Leg netwerktraceringen of BID-traceringen vast, zoals opgegeven bij Advanced SSL Data Capture om de ondersteuningstechnicus te helpen.