.NET framework version 3.5.1 og tidligere versioner understøttede ikke programmer til at bruge TLS-standardversioner (Transport Layer Security) som en krypteret protokol. Denne opdatering aktiverer brugen af TLS v1.2 i .NET Framework 3.5.1.
BemærkDette indhold er gjort tilgængeligt Windows Opdatering. Du kan hente indholdet ved at Windows Opdater for at få de seneste .NET Framework opdateringer. Hvis dit system er helt opdateret via Windows Opdatering, behøver du ikke at udføre yderligere handlinger.
Løsning
Overførselsoplysninger
Det hotfix, der svarer til KB3154518, er blevet ændret i forhold til de seneste opdateringer af .NET Framework, som indeholder alle rettelser, der tidligere blev inkluderet i KB3154518. Det anbefales at installere de seneste opdateringer af .NET Framework. Vi har foretaget følgende forbedringer på dette område:
-
Følgende registreringsdatabasenøgler kan indstilles til at bruge standardindstillingerne for operativsystem for SSL og TLS i stedet for de hardcodede .NET Framework for et administreret program, der kører på computeren.
-
Til 64-bit operativsystemer:[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 -
Til 32-bit operativsystemer:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Bemærk! Hvis programmet har angivet servicePointManager.SecureProtocode i kode eller via konfigurationsfiler til en bestemt værdi eller bruger SSLStream.AuthenticateAs* API'er til at angive en bestemt SslProtoskildpaddes enum, sker indstillingsfunktionsmåden for registreringsdatabasen ikke.
-
-
Desuden har vi tilføjet sslProtoskildpaddesExtensions-enumeration, som du kan bruge som en indstilling til at indstille TLS v1.2, TLS v1.1 samt operativsystemstandard for egenskaben ServicePointManager.SecurityProtoskildpadde ved målretning af .NET framework version 2.0 SP2. (Se sektionen Udviklervejledning for at få oplysninger om, hvordan du bruger udvidelser).
Bemærk Windows Vista SP2 og Windows Server 2008 SP2 ikke understøtter nyere versioner af Transport Layer Security (TLS) end 1.0. Administreret .NET Framework 2.0 SP2-programmer, der kører på Windows Vista SP2 eller Windows Server 2008 SP2, kan ikke bruge TLS 1.2 eller TLS 1.1, selvom disse protokoller er angivet i egenskaben ServicePointManager.SecurityProtoskildpadde.
Du kan finde flere oplysninger om, hvordan du henter Microsoft-supportfiler, ved at klikke på tallet i følgende artikel for at få vist artiklen i Microsoft Knowledge Base:
119591 Sådan får du Microsoft-supportfiler fra onlinetjenester, som Microsoft har scannet denne fil for virus. Microsoft brugte den nyeste antivirussoftware, der var tilgængelig på den dato, hvor filen blev publiceret. Filen er placeret på servere med udvidet sikkerhed, der bidrager til at forhindre uautoriserede ændringer af filen.
Udviklervejledning
Definitionen af de nye udvidelser findes i følgende filer:
-
SecurityProtoskildpaddeTypeExtensions.csnamespace System.Net
{ ved hjælp af System.Security.Authentication; offentlig statisk klasse SecurityProtoskildpaddeTypeExtensions { public const SecurityProtoskildpaddeType Tls12 = (SecurityProtoskildpaddeType)SslProtoskildpaddesExtensions.Tls12; public const SecurityProtoskildpaddeType Tls11 = (SecurityProtoskildpaddeType)SslProtoskildpaddesExtensions.Tls11; public const SecurityProtoskildpaddeType SystemDefault = (SecurityProtoskildpaddeType)0; } } -
SslProto prototypesExtensions.csnamespace System.Security.Authentication
{ offentlig statisk klasse SslProtoskildpaddesExtensions { public const SslProtoskildpaddes Tls12 = (SslProtoskildpaddes)0x00000C00; public const SslProtoskildpaddes Tls11 = (SslProtoskildpaddes)0x00000300; } }
Hvis du vil medtage understøttelsen af TLS v1.2, skal du medtage kildefilerne i projektet og derefter angive protokolversionen ved hjælp af følgende metoder:
-
Programmer, der bruger ServicePointManager-baserede API'er, kan indstille protokollen ved hjælp af følgende:
System.Net.ServicePointManager.SecurityProtoskildpadde = SecurityProtoskildpaddeTypeExtensions.Tls12; -
Programmer, der bruger overbelastning af SslStream-godkendelseAsClient(Streng, X509CertificateCollection, SslProtoskildpaddes, Boolean), kan angive værdien SslProtoskildpaddes som SslProtoectionsExtensions.Tls12.
Hvis den indstilling i registreringsdatabasen, der er nævnt i det første afsnit, er angivet, og SslProto hele værdien er angivet i programmet som SslProtoskildpaddes.Ingen, vil den valgte systemstandardfunktionsmåde afhænge af Windows version.
Når du ændrer programkoden for at aktivere understøttelse af TLS v1.2 med .NET Framework 3.5 SP1, skal du desuden sikre dig, at du adresserer følgende undtagelser på computere, hvor denne programrettelse ikke er installeret:-
Hvis hotfixet ikke er installeret, vises "System.NotSupportedException: The requested security protocol is not supported", når programmet kalder ServicePointManager.SecurityProtoskildpadde for at angive den nye værdi, hvis hotfixet ikke er installeret.
-
Hvis hotfixet ikke er installeret, giver SslStream-baserede API'er undtagelser, når de kalder en af Api'erne*-API'er (AuthenticateAs*):
System.ArgumentException: Den angivne værdi er ikke gyldig i 'SslProtoskildpaddeType'-enumerationen.
Parameternavn: sslProto sslType
Bemærk! Kun SslStream, en kombination af Tls12, Tls11 med en af de eksisterende Tls, Ssl3, Ssl2 (for eksempel: Tls12 | Tls11 | Tls) nedgraderer automatisk til de eksisterende protokoller (f.eks.: Tls) på et system uden programrettelsen. Den opretter forbindelse til Tls uden undtagelsen.
Flere oplysninger
For at aktivere TLS v1.1 eller v1.2 som standard for operativsystem skal du følge vejledningen på https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12. Bemærk, at TLS v1.1 og v1.2 ikke er tilgængelige i Windows Vista eller Windows Server 2008. Hvis du er nødt til at deaktivere standardindstillingerne for operativsystemet, der er angivet af registreringsdatabasenøglen, der er nævnt i afsnittet "Løsning" for bestemte programmer, kan du gøre dette ved at tilføje følgende registreringsdatabasenøgle:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<Hele stien til .exe til filen>> DWORD 0 C:\MyApp\MyApp.exe DWORD 0
Du kan finde flere oplysninger om TLS v1.2 i Introduktion til TLS v1.2. Når du har aktiveret registreringsdatabasenøglen SystemDefaultTlsVersions .NET, sker der en anden funktionsmåde for hver version af Windows, som vist i følgende tabel.
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 og Windows Server 2008 SP2 |
Fra |
Til |
Til |
Til |
Til |
Til |
I/T |
I/T |
I/T |
I/T |
Windows 7 SP1 og Windows Server 2008 R2 SP1 |
Fra |
Til |
Til |
Til |
Til |
Til |
Fra |
Fra |
Fra |
Fra |
Windows Server 2012 |
Fra |
Fra |
Til |
Til |
Til |
Til |
Til |
Til |
Til |
Til |
Windows 8.1 og Windows Server 2012 R2 |
Fra |
Fra |
Til |
Til |
Til |
Til |
Til |
Til |
Til |
Til |
Windows 10 |
Fra |
Fra |
Til |
Til |
Til |
Til |
Til |
Til |
Til |
Til |
Windows 10 (1511) |
Fra |
Fra |
Til |
Til |
Til |
Til |
Til |
Til |
Til |
Til |
Windows 10 (1607) og Windows Server 2016 |
I/T |
I/T |
Fra |
Fra |
Til |
Til |
Til |
Til |
Til |
Til |