.NET Framework version 3.5 och tidigare versioner stödjer inte program som använder TLS-systemstandardversioner (Transport Layer Security) som ett kryptografprotokoll. Den här uppdateringen aktiverar användningen av TLS v1.2 i .NET Framework 3.5.
Obs ! Det här innehållet har gjorts tillgängligt på Windows Update. Sök efter det innehåll du behöver Windows efter de senaste .NET Framework uppdateringarna. Om ditt system är helt uppdaterat via Windows behöver du inte vidta ytterligare åtgärder.
Lösning
Ladda ned information
Den snabbkorrigering som motsvarar KB3154519 har ersatts med de senaste uppdateringarna av .NET Framework, som innehåller alla korrigeringar som tidigare ingick i KB3154519. Vi rekommenderar att du installerar de senaste uppdateringarna .NET Framework.
Vi har gjort följande förbättringar på det här området:
-
Följande registernycklar kan ställas in så att operativsystemets standardinställningar för SSL och TLS används i stället för de hårdkodade .NET Framework-standardvärdena 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 genom konfigurationsfiler till ett specifikt värde, eller använder SSLStream.AuthenticateAs*-API:er för att ange en viss SslProtocols-uppräkning, uppstår inte registerinställningsbeteendet.
-
-
Dessutom har vi lagt till en sslProtocolsExtensions-uppräkning som du kan använda som alternativ för att ange TLS v1.2, TLS v1.1, samt som standardinställningar för operativsystemet för egenskapen ServicePointManager.SecurityProtocol när du riktar mål för .NET Framework version 2.0 SP2. (Se avsnittet Utvecklarvägledning för information om hur du använder tilläggen.)
Obs Windows Vista SP2 och Windows Server 2008 SP2 stöder inte TLS-protokollversioner (Transport Layer Security) som är nyare än 1.0. Hanterade .NET Framework 2.0 SP2-program som körs på Windows Vista SP2 eller Windows Server 2008 SP2 kan inte använda TLS 1.2 eller TLS 1.1, även om dessa protokoll anges i egenskapen ServicePointManager.SecurityProtocol.
Om du vill ha mer information om hur du laddar ned Microsoft-supportfiler klickar du på följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:
119591 Så här hämtar du Microsoft-supportfiler från onlinetjänster Som Microsoft skannade filen efter virus. Microsoft använde det senaste virusidentifieringsprogrammet som var tillgängligt det datum då filen publicerades. Filen lagras på servrar med säkerhet som hjälper till att förhindra obehöriga ändringar i filen.
Utvecklarvägledning
Definitionen av de nya tilläggen finns i följande filer:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{
använda System.Security.Authentication;
offentlig statisk klass 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
{
offentlig statisk klass SslProtocolsExtensions
{
public const SslProtocols Tls12 = (SslProtocols)0x00000C00;
public const SslProtocols Tls11 = (SslProtocols)0x00000300;
}
}
Om du vill inkludera stöd för TLS v1.2 tar du med källfilerna i projektet och anger sedan protokollversionen med hjälp av följande metoder:
-
Program som använder ServicePointManager-baserade API:er kan ange protokollet med hjälp av följande:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Program som använder sslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) kan ange värdet sslProtocols som SslProtocolsExtensions.Tls12.
Om registerinställningen som nämns i det första stycket har angetts och värdet SslProtocols anges som SslProtocols.None i programmet beror det valda systemstandardbeteendet på den Windows versionen.
När du ändrar programkoden för att aktivera stöd för TLS v1.2 med .NET Framework 3.5 SP1 bör du även se till att åtgärda följande undantag på datorer där korrigeringen inte har distribuerats:
-
Om snabbkorrigeringen inte är installerad returnerar ServicePointManager-baserade API:er (HTTP, FTP, SMTP) "System.NotSupportedException: Det begärda säkerhetsprotokoll stöds inte" när programmet anropar ServicePointManager.SecurityProtocol för att ange det nya värdet.
-
Om snabbkorrigeringen inte är installerad, ger SSLStream-baserade API:er undantag när de anropar någon av API:erna för AuthenticateAs*:
System.ArgumentException: Det angivna värdet är inte giltigt i uppräkningen "SslProtocolType".
Parameternamn: sslProtocolType
Obs! Endast för SslStream, en kombination av Tls12, Tls11 och någon av de befintliga Tlserna, Ssl3, Ssl2 (till exempel: Tls12 | Tls11-| Tls) nedgraderar tyst till befintliga protokoll (till exempel TLS) på ett system utan korrigeringen. Den ansluter till Tls utan undantag.
Mer information
Om du vill aktivera TLS v1.1 eller v1.2 som standard operativsystem följer du anvisningarna i https://technet.microsoft.com/en-us/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.
Om du måste inaktivera standardinställningarna för operativsystemet som anges av registernyckeln som nämns i avsnittet "Upplösning" för specifika program kan du göra det genom att lägga till följande registernyckel:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions
<<Fullständig sökväg till .exe för filen>> DWORD 0
C:\MyApp\MyApp.exe DWORD 0
Mer information om TLS v1.2 finns i Introduktion till TLS v1.2.
När du har aktiverar registernyckeln SystemDefaultTlsVersions .NET, uppstår ett annat beteende 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 |
Av |
På |
På |
På |
På |
På |
Ej ant. |
Ej ant. |
Ej ant. |
Ej ant. |
Windows 7 SP1 och Windows Server 2008 R2 SP1 |
Av |
På |
På |
På |
På |
På |
Av |
Av |
Av |
Av |
Windows Server 2012 |
Av |
Av |
På |
På |
På |
På |
På |
På |
På |
På |
Windows 8.1 och Windows Server 2012 R2 |
Av |
Av |
På |
På |
På |
På |
På |
På |
På |
På |
Windows 10 |
Av |
Av |
På |
På |
På |
På |
På |
På |
På |
På |
Windows 10 (1511) |
Av |
Av |
På |
På |
På |
På |
På |
På |
På |
På |
Windows 10 (1607) och Windows Server 2016 |
Ej ant. |
Ej ant. |
Av |
Av |
På |
På |
På |
På |
På |
På |