SSL-fel rapporteras efter uppgradering till TLS 1.2
Den här artikeln innehåller information om de SSL-fel (Secure Sockets Layer) som kan uppstå när du har uppgraderat till TLS 1.2 i SQL Server. Den visar också de metoder som du kan hämta data med manuellt. Du kan också köra SQLCHECK-verktyget och granska informationen i SQLCHECK-loggfilen .
Symptom
Tänk dig följande scenario där du kan se följande problem när du har uppgraderat TLS-protokollet till TLS 1.2.
Microsoft SQL Server använder ett certifikat som signeras av en svag hash-algoritm. Sådana certifikat omfattar MD5, SHA224 och SHA512.
TLS 1.2-uppgraderingar tillämpades endast på klienten eller servern, men inte på båda.
TLS 1.0 är inaktiverat.
Det finns inga matchande kryptografiska algoritmer mellan klienten och servern.
I det här scenariot uppstår följande problem när uppgraderingen är klar:
Problem som påverkar servercertifikatet påverkar även lokala anslutningar och anslutningar från klientdatorer. Mer information finns i Kryptera anslutningar till SQL Server.
Programmet kan generera något av följande felmeddelanden:
Namngivna pipes
En anslutning upprättades med servern, men sedan uppstod ett fel under inloggningsprocessen. (provider: SSL-provider, fel: 0 – Ingen process i andra änden av röret) Microsoft SQL Server, Fel: 233.
TCP
En anslutning upprättades med servern, men sedan uppstod ett fel under inloggningsprocessen. (provider: SSL-provider, fel: 0 – Anslutningen stängdes med två två skäl av fjärrvärden 10054) Microsoft SQL Server, Fel: 233.
Om du har en nätverksavbildning kan den likna följande skärmbild som visar att servern svarar på paketet genom att Client Hello
stänga anslutningen.
Åtgärd
Följ anvisningarna för att lösa dessa fel:
Öppna Konfigurationshanteraren för SQL Server, högerklicka på Protokoll för <InstanceName> och välj sedan Egenskaper.
Välj fliken Certifikat och kontrollera vilket certifikat som används.
Om det finns ett certifikat väljer du Visa för att undersöka det och väljer sedan Rensa. Gå sedan till steg 4.
Om det inte finns något certifikat granskar du SQL Server-felloggfilen för att hämta hash-koden. Du kan se någon av följande poster:
2023-05-30 14:59:30.89 spid15s The certificate [Cert Hash(sha1) "B3029394BB92AA8EDA0B8E37BAD09345B4992E3D"] was successfully loaded for encryption.
eller2023-05-19 04:58:56.42 spid11s A self-generated certificate was successfully loaded for encryption.
Om certifikatet är självgenererat går du vidare till steg 2.
Öppna datorcertifikatarkivet i Microsoft Management Console (MMC).
Gå till Personliga certifikat.
Expandera kolumnen Avsedda syften och dubbelklicka på certifikat som är aktiverade för serverautentisering.
Kontrollera om tumavtrycket matchar tumavtrycket i felloggfilen. Om den inte gör det kan du prova ett annat certifikat.
Kontrollera algoritmen för signaturhash. Om det är MD5, SHA224 eller SHA512 stöder det inte TLS 1.2. Om det är en av de svaga algoritmerna inaktiverar du Serverautentisering så att SQL Server inte kan använda den.
Om certifikatet uttryckligen anges i Konfigurationshanteraren för SQL Server väljer du Rensa för att ta bort det.
Leta upp certifikatet i MMC.
Högerklicka på certifikatet i MMC och välj sedan Egenskaper.
På fliken Allmänt inaktiverar du antingen certifikatet helt eller inaktiverar serverautentisering selektivt.
Spara ändringarna.
Starta om SQL Server.
Felloggen bör nu indikera att ett självgenererat certifikat används. Om problemet är löst kan SQL Server köras med hjälp av det självsignerade certifikatet. Om du vill ha ett Verisign- eller annat certifikat måste du be certifikatprovidern att se till att en stark hash används som är lämplig för TLS 1.2. Om problemet inte har lösts återgår du till steg 2.
Kontrollera aktiverade och inaktiverade TLS-protokoll
Följ dessa steg för att kontrollera de aktiverade och inaktiverade TLS-protokollen:
Kontrollera arbetsflödet för bakgrunds- och grundläggande uppgradering om du inte redan har gjort det.
Både klienten och servern måste uppgraderas för att framtvinga TLS 1.2. Om det behövs kan du uppgradera servern men låta TLS 1.0 vara aktiverat så att icke-uppgraderade klienter kan ansluta.
Kontrollera SSL- eller TLS-registret med hjälp av REGEDIT.
Du hittar de aktiverade och inaktiverade SSL- eller TLS-versionerna under följande registerundernyckel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Det finns klient- och serverundernycklar för varje version av SSL eller TLS, och båda har värden aktiverade och inaktiverade :
[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
Kommentar
Alla värden som inte är noll behandlas som TRUE. 1 är dock vanligtvis att föredra i stället för FFFFFFFF (eller -1).
Kontrollera att det inte finns några inkompatibla inställningar.
TLS 1.0 är till exempel inaktiverat och TLS 1.2 är aktiverat på servern. Det beror på att de här inställningarna kanske inte matchar inställningarna på klienten eller att klientdrivrutinen kanske inte uppdateras.
Du kan testa den här situationen genom att ange
Enabled=0
för TLS 1.2 (och även återaktivera TLS 1.0 om den är inaktiverad).Starta om SQL Server för att kontrollera om problemet är relaterat till TLS 1.2 eller om det är ett allmänt problem.
Inga matchande chiffersviter
Du kan undersöka klient- och server-TLS-versioner och chiffersviter i paketen Client Hello
och Server Hello
. Paketet Client Hello
annonserar alla klient chiffersviter och Server Hello
paketet anger en chiffersvit. Om det inte finns några matchande sviter stänger servern anslutningen i stället för att svara genom att skicka Server Hello
paketet.
Om en nätverksspårning inte är tillgänglig kan du kontrollera funktionsvärdet under följande registerundernyckel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002
Kontakta Microsoft Support om du inte ser några matchande algoritmer. För att hjälpa supportteknikern kan du samla in nätverksspårningar eller BID-spårningar enligt vad som anges i Avancerad SSL-datainsamling.