En befintlig anslutning stängdes av av fjärrvärden (OS-fel 10054)
Gäller för: SQL Server
Obs!
Innan du börjar felsöka rekommenderar vi att du kontrollerar förutsättningarna och går igenom checklistan.
Den här artikeln beskriver olika scenarier och innehåller lösningar på följande fel:
-
En anslutning upprättades med servern, men sedan uppstod ett fel under inloggningsprocessen. (provider: SSL-provider, fel: 0 – En befintlig anslutning stängdes med två skäl av fjärrvärden.)
-
En anslutning upprättades med servern, men sedan uppstod ett fel under handskakningen före inloggningen. (provider: TCP-provider, fel: 0 – En befintlig anslutning stängdes med två skäl av fjärrvärden.)
Operativsystemfel 10054 utlöses i Windows sockets-lagret. Mer information finns i Felkoder för Windows Sockets: WSAECONNRESET 10054.
När visas felet?
Secure Channel, även kallat Schannel, är en SSP (Security Support Provider ). Den innehåller en uppsättning säkerhetsprotokoll som tillhandahåller identitetsautentisering och säker privat kommunikation via kryptering. En funktion i Schannel SSP är att implementera olika versioner av TLS-protokollet (Transport Layer Security). Det här protokollet är en branschstandard som är utformad för att skydda sekretessen för information som förmedlas via Internet.
TLS Handshake Protocol ansvarar för det nyckelutbyte som krävs för att upprätta eller återuppta säkra sessioner mellan två program som kommunicerar via TCP. Under fasen före inloggningen av anslutningsprocessen använder SQL Server- och klientprogram TLS-protokollet för att upprätta en säker kanal för överföring av autentiseringsuppgifter.
I följande scenarier beskrivs fel som uppstår när handskakningen inte kan slutföras:
Scenario 1: Det finns inga matchande TLS-protokoll mellan klienten och servern
Secure Socket Layer (SSL) och versioner av TLS tidigare än TLS 1.2 har flera kända säkerhetsrisker. Du uppmanas att uppgradera till TLS 1.2 och inaktivera tidigare versioner där det är möjligt. Därför kan systemadministratörer skicka ut uppdateringar via grupprinciper eller andra mekanismer för att inaktivera dessa osäkra TLS-versioner på olika datorer i din miljö.
Anslutningsfel uppstår när programmet använder en tidigare version av ODBC-drivrutinen (Open Database Connectivity), OLE DB-providern, .NET-ramverkskomponenter eller en SQL Server version som inte stöder TLS 1.2. Problemet beror på att servern och klienten inte kan hitta ett matchande protokoll (till exempel TLS 1.0 eller TLS 1.1). Ett matchande protokoll krävs för att slutföra TLS-handskakningen som krävs för att fortsätta med anslutningen.
Åtgärd
Använd en av följande metoder för att lösa problemet:
- Uppgradera din SQL Server eller dina klientleverantörer till en version som stöder TLS 1.2. Mer information finns i TLS 1.2-stöd för Microsoft SQL Server.
- Be systemadministratörerna att tillfälligt aktivera TLS 1.0 eller TLS 1.1 på både klient- och serverdatorerna genom att utföra någon av följande åtgärder:
- Använd fliken Chiffersviter i IIS Crypto-verktyget för att verifiera och göra ändringar i de aktuella TLS-inställningarna.
- Starta Registry Editor och leta upp de Schannel-specifika registernycklarna:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
. Mer information finns i TLS 1.2 Upgrade Workflow and SSL Errors after Upgrade to TLS 1.2 (Uppgraderingsarbetsflöde för TLS 1.2 och SSL-fel efter uppgradering till TLS 1.2).
Scenario 2: Matchande TLS-protokoll på klienten och servern, men inga matchande TLS-chiffersviter
Det här scenariot inträffar när du eller administratören har begränsat vissa algoritmer på klienten eller servern för extra säkerhet.
Klient- och server-TLS-versioner, chiffersviter kan enkelt undersökas i klient-Hello- och server-Hello paket i en nätverksspårning. Client Hello-paketet annonserar alla klient chiffersviter, medan Server Hello-paketet anger en av dem. Om det inte finns några matchande sviter stänger servern anslutningen i stället för att svara på Server Hello-paketet.
Åtgärd
Följ dessa steg för att kontrollera problemet:
Om en nätverksspårning inte är tillgänglig kontrollerar du funktionsvärdet under den här registernyckeln:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002
Använd följande PowerShell-kommando för att hitta TLS-funktionerna.
Get-ItemPropertyValue -Path HKLM:\System\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002\ -Name Functions
Använd fliken Chiffersviter i IIS Crypto-verktyget för att kontrollera om det finns några matchande algoritmer. Om inga matchande algoritmer hittas kontaktar du Microsoft Support.
Mer information finns i TLS 1.2 Upgrade Workflow and Transport Layer Security (TLS) connections might fail or timeout when connecting or attempting asumtion (TLS 1.2 Upgrade Workflow and Transport Layer Security(TLS) connections might fail or timeout when connecting or attempting asumtion .
Scenario 3: SQL Server använder ett certifikat som signerats av en svag hashalgoritm, till exempel MD5, SHA224 eller SHA512
SQL Server krypterar alltid nätverkspaket som är relaterade till inloggning. För detta ändamål använder den ett manuellt etablerat certifikat eller ett självsignerat certifikat. Om SQL Server hittar ett certifikat som stöder serverautentiseringsfunktionen i certifikatarkivet använder det certifikatet. SQL Server använder det här certifikatet även om det inte har etablerats manuellt. Om dessa certifikat använder en svag hash-algoritm (tumavtrycksalgoritm) som MD5, SHA224 eller SHA512 fungerar de inte med TLS 1.2 och orsakar det tidigare nämnda felet.
Obs!
Självsignerade certifikat påverkas inte av det här problemet.
Lösning
Du löser problemet genom att följa dessa steg:
- I Konfigurationshanteraren för SQL Server expanderar du SQL Server Nätverkskonfiguration i konsolfönstret.
- Välj Protokoll som <instansnamn>.
- Välj fliken Certifikat och följ det relevanta steget:
- Om ett certifikat visas väljer du Visa för att undersöka tumavtrycksalgoritmen för att bekräfta om den använder en algoritm för svag hash. Välj sedan Rensa och gå till steg 4.
- Om ett certifikat inte visas granskar du SQL Server felloggen för en post som liknar följande och noterar hash- eller tumavtrycksvärdet:
2017-05-30 14:59:30.89 spid15s The certificate [Cert Hash(sha1) "B3029394BB92AA8EDA0B8E37BAD09345B4992E3D"] was successfully loaded for encryption
- Använd följande steg för att ta bort serverautentisering:
- Välj Starta>körning och skriv MMC. (MMC kallas även Microsoft Management Console.)
- Öppna certifikaten i MMC och välj Datorkonto på snapin-modulen Certifikat .
- Expandera Personliga>certifikat.
- Leta upp certifikatet som SQL Server använder med dess namn eller genom att undersöka tumavtrycksvärdet för olika certifikat i certifikatarkivet och öppna dess egenskapsfönster.
- På fliken Allmänt väljer du Aktivera endast följande syften och avmarkerarServerautentisering.
- Starta om SQL Server-tjänsten.
Scenario 4: Klienten och servern använder TLS_DHE chiffersvit för TLS-handskakning, men ett av systemen har inga inledande nollkorrigeringar för TLS_DHE installerat
Mer information om det här scenariot finns i Programupplevelse med tvångsslutna TLS-anslutningsfel vid anslutning av SQL-servrar i Windows.
Obs!
Om den här artikeln inte har löst problemet kan du kontrollera om de vanliga artiklarna om anslutningsproblem kan vara till hjälp.
Scenario 5: TCP Three-Way Timeout för handskakning (SYN-fel, TCP-avvisning) på grund av brist på IOCP-arbetare
I system med höga arbetsbelastningar SQL Server 2017 och tidigare kan du se tillfälliga 10054-fel som orsakas av trevägshandskakningsfel i TCP, vilket leder till TCP-avslag. Rotorsaken till det här problemet kan bero på fördröjningen i bearbetningen av TCPAcceptEx-begäranden. Den här fördröjningen kan bero på brist på IOCP-lyssnare (in-/utdataslutsport) som ansvarar för att hantera godkännandet av inkommande anslutningar. Det otillräckliga antalet IOCP-arbetare och upptagen service av andra begäranden leder till fördröjd bearbetning av anslutningsbegäranden, vilket i slutändan resulterar i handskakningsfel och TCP-avslag. Du kan också se tidsgränser för inloggning under start-SSL-handskakningen (om det finns några) eller bearbetningen av inloggningsbegäranden, vilket inbegriper autentiseringskontroller.
Åtgärd
Brist på IOCP-arbetare och SOS Worker-resurser som allokerats för hantering av autentiserings- och krypteringsåtgärder är den främsta orsaken till TCP-tidsgränser för trevägshandskakning och ytterligare tidsgränser för inloggning. SQL Server 2019 innehåller flera prestandaförbättringar på det här området. En viktig förbättring är implementeringen av en dedikerad pool för inloggningsutskick. Detta optimerar allokeringen av resurser för inloggningsrelaterade uppgifter, vilket minskar förekomsten av timeouter och förbättrar övergripande systemprestanda.
Se även
Ansvarsfriskrivning för information från tredje part
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för