.NET framework version 2.0 Service Pack 2 (SP2) och tidigare versioner hårdkodad v3.0 SSL (Secure Sockets Layer) (SSL) och Transport Layer Security (TLS) v1.0 som standard såvida inte ett annat protokollversion har angetts av programmet .NET. Denna uppdatering för.NET Framework 2.0 SP2 på Windows Vista SP2 och Windows Server 2008 SP2 lägger till alternativet att använda SSL och TLS standardvärden som tillhandahålls av operativsystemet.
Observera detta innehåll som har gjorts tillgängliga på Windows Update. Du kan hämta innehållet igenom Windows Update efter de senaste uppdateringarna för.NET Framework. Om systemet är fullständigt uppdaterad via Windows Update, behöver du inte vidta några ytterligare åtgärder.
Lösning
Information om hämtning
Följande filer kan hämtas från Microsoft Download Center:Hämta paketet med x86 nu.Hämta paketet med x64 nu. Hämta paketet IA64-baserade nu. Vi har gjort följande förbättringar inom detta område:
-
Följande register nycklar kan ställas in att använda operativsystemet som standard för SSL och TLS istället för hårdkodad.NET Framework standardinställningar för ett hanterat program som körs på datorn.
-
För 64-bitars operativsystem:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]"SystemDefaultTlsVersions"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]"SystemDefaultTlsVersions"=dword:00000001
-
För 32-bitars operativsystem:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]"SystemDefaultTlsVersions"=dword:00000001
Obs! Om programmet har ställt in ServicePointManager.SecureProtocol i kod eller via config filer till ett visst värde eller använder SslStream.AuthenticateAs* API: er för att ange en viss SslProtocols enum registerinställningen problemet uppstår inte.
-
-
Dessutom har vi lagt till i SslProtocolsExtensions -uppräkningen som du kan använda som ett alternativ för att ange TLS v1.2, TLS v1.1 samt operativsystemet standardinställningar för egenskapen ServicePointManager.SecurityProtocol när målobjekt för .NET version av Framework 2.0 SP2. (Se avsnittet Vägledning för utvecklare för information om hur du använder filnamnstilläggen.) Obs! Windows Vista SP2 och Windows Server 2008 SP2 stöder inte Transport Layer Security (TLS) protokoll versioner nyare än 1.0. Hanterade.NET Framework 2.0 SP2-program som körs på Windows Vista SP2 eller Windows Server 2008 SP2 använda inte TLS 1.2 eller TLS 1.1, även om de protokoll som anges i egenskapen ServicePointManager.SecurityProtocol .
För mer information om hur du hämtar supportfiler från Microsoft klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
119591 Hur du hämtar Microsoft-supportfiler från onlinetjänster Microsoft har genomsökt denna fil efter virus. Microsoft använde det mest aktuella antivirusprogram som var tillgängligt när filen lades upp. Filen är sparad på servrar med utökad säkerhet som hjälper till att förhindra otillåtna ändringar av den.
Vägledning för utvecklare
Definitionen av nya tillägg finns i följande filer:
-
SecurityProtocolTypeExtensions.csnamespace System.Net{using System.Security.Authentication;public static class SecurityProtocolTypeExtensions{public const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12;public const SecurityProtocolType Tls11 = (SecurityProtocolType)SslProtocolsExtensions.Tls11;public const SecurityProtocolType SystemDefault = (SecurityProtocolType)0;}}
-
SslProtocolsExtensions.csnamespace System.Security.Authentication{public static class SslProtocolsExtensions{public const SslProtocols Tls12 = (SslProtocols)0x00000C00;public const SslProtocols Tls11 = (SslProtocols)0x00000300;}}
Om du vill inkludera stöd för TLS v1.2 innehåller källfilerna i projektet och ange protocol version med hjälp av följande metoder:
-
Program som använder ServicePointManager-baserade API: er anger protokollet genom att använda following:System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;
-
Program som använder SslStream AuthenticateAsClient (sträng, X509CertificateCollection, SslProtocols, Boolean) överbelastning kan ange värdet för SslProtocols som SslProtocolsExtensions.Tls12.
Om registerinställningen som nämns i första stycket anges, och värdet för SslProtocols anges i program som SslProtocols.None, beror standardbeteendet för system som väljs på vilken Windows-version. Även när du ändrar programkod för att aktivera stöd för TLS v1.2 med.NET Framework 3.5 SP1, bör du du adresserar på datorer där den här korrigeringsfilen inte distribueras följande undantag:
-
Om snabbkorrigeringen inte är installerad, ServicePointManager-baserat API: er (HTTP, FTP, SMTP) kommer kasta ”System.NotSupportedException: det begärda säkerhetsprotokollet stöds inte” när programmet anropar ServicePointManager.SecurityProtocol att ange det nya värdet.
-
Om snabbkorrigeringen inte är installerad, SslStream-baserat API-gränssnitt kommer kasta undantag när de ringer antingen AuthenticateAs * API:
System.ArgumentException: Det angivna värdet är inte giltigt i uppräkningen 'SslProtocolType'. Parameternamn: sslProtocolType
Obs! För SslStream , en kombination av Tls12, Tls11 med någon av de befintliga Tls, Ssl3Ssl2 (till exempel: Tls12 | Tls11 | TLS) utan att nedgradera till befintliga protokoll (till exempel: Tls) på ett system utan korrigeringsfilen. Den ansluter till Tls utan att undantaget.
Mer information
Om du vill aktivera TLS v1.1 och v1.2 som standard i operativsystemet, följ instruktionerna på https://technet.microsoft.com/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12.Obs! TLS-v1.1 och v1.2 är inte tillgängliga i Windows Vista eller Windows Server 2008.If du måste inaktivera operativsystemet standardvärdena som anges av registernyckeln som nämns i avsnittet ”lösning” för vissa program kan du göra detta genom att lägga till den följande registernyckel:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions<<Full path of the .exe for the file>> DWORD 0C:\MyApp\MyApp.exe DWORD 0
Mer information om TLS v1.2 finns i Introduktion till TLS v1.2. När du aktiverar registernyckeln SystemDefaultTlsVersions .NET inträffar en annan för varje version av Windows, som visas i följande tabell.
Windows-version |
SSL2-klient |
SSL2 Server |
SSL3-klient |
SSL3 Server |
TLS 1.0 klient |
TLS 1.0 Server |
TLS 1.1 klient |
TLS 1.1 Server |
TLS 1.2 klient |
TLS 1.2 Server |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 och Windows Server 2008 SP2 |
Inaktivera |
På |
På |
På |
På |
På |
N/A |
N/A |
N/A |
N/A |
Windows 7 SP1 och Windows Server 2008 R2 SP1 |
Inaktivera |
På |
På |
På |
På |
På |
Inaktivera |
Inaktivera |
Inaktivera |
Inaktivera |
Windows Server 2012 |
Inaktivera |
Inaktivera |
På |
På |
På |
På |
På |
På |
På |
På |
Windows 8.1 och Windows Server 2012 R2 |
Inaktivera |
Inaktivera |
På |
På |
På |
På |
På |
På |
På |
På |
Windows 10 |
Inaktivera |
Inaktivera |
På |
På |
På |
På |
På |
På |
På |
På |
Windows 10 (1511) |
Inaktivera |
Inaktivera |
På |
På |
På |
På |
På |
På |
På |
På |
Windows 10 (1607) och Windows Server 2016 |
N/A |
N/A |
Inaktivera |
Inaktivera |
På |
På |
På |
På |
På |
På |