De .NET framework versie 3.5 SP1 en eerdere versies bieden geen ondersteuning voor toepassingen voor het gebruik van TLS(Transport Layer Security) System Default Versions (Transport Layer Security) als een cryptografische protocol. Met deze update kunt u TLS v1.2 gebruiken in .NET Framework 3.5 SP1.
OpmerkingDeze inhoud is beschikbaar gesteld op Windows Update. Als u de inhoud wilt verkrijgen, scant u Windows Update voor de meest recente .NET Framework updates. Als uw systeem volledig up-to-date is via Windows Update, hoeft u geen verdere actie te ondernemen.
Oplossing
Informatie over downloaden
De hotfix die overeenkomt met KB3154520, is overgehebd met de meest recente updates van .NET Framework, die alle fixes bevatten die eerder in KB3154520 waren opgenomen. Het wordt aanbevolen om de meest recente updates van .NET Framework. We hebben de volgende verbeteringen aangebracht op dit gebied:
-
De volgende registersleutels kunnen worden ingesteld op het gebruik van de standaardinstellingen van het besturingssysteem voor SSL en TLS in plaats van de hardcoded .NET Framework-standaardwaarden voor een beheerde toepassing die op de computer wordt uitgevoerd.
-
Voor 64-bits besturingssystemen:[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 -
Voor 32-bits besturingssystemen:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Opmerking Als de toepassing de ServicePointManager.SecureProtocol in code of via config-bestanden heeft ingesteld op een specifieke waarde of de API's SslStream.AuthenticateAs* gebruikt om een specifiek SslProtocols-bestand op te geven, treedt het gedrag van de registerinstelling niet op.
-
-
Daarnaast hebben we de SslProtocolsExtensions-lijst toegevoegd die u kunt gebruiken als optie voor het instellen van TLS v1.2, TLS v1.1, evenals standaardinstellingen voor het besturingssysteem voor de eigenschap ServicePointManager.SecurityProtocol wanneer u zich richt op .NET framework versie 2.0 SP2. (Zie de sectie Ontwikkelaarsadvies voor informatie over het gebruik van de extensies.)
Opmerking Windows Vista SP2 en Windows Server 2008 SP2 geen TLS-protocolversies (Transport Layer Security) ondersteunen die hoger zijn dan 1.0. Beheerde .NET Framework 2.0 SP2-toepassingen die worden uitgevoerd op Windows Vista SP2 of Windows Server 2008 SP2 kunnen TLS 1.2 of TLS 1.1 niet gebruiken, zelfs niet als deze protocollen zijn ingesteld in de eigenschap ServicePointManager.SecurityProtocol.
Voor meer informatie over het downloaden van Microsoft-ondersteuningsbestanden, klikt u op het volgende artikelnummer om het artikel te bekijken in de Microsoft Knowledge Base:
119591 Microsoft-ondersteuningsbestanden verkrijgen bij onlineservices Microsoft heeft dit bestand gescand op virussen. Hierbij is gebruikgemaakt van software voor virusdetectie die volledig bijgewerkt was op de datum dat het bestand beschikbaar werd gesteld. Het bestand is opgeslagen op beveiligde servers die onbevoegde wijzigingen aan het bestand helpen voorkomen.
Richtlijnen voor ontwikkelaars
De definitie van de nieuwe extensies staat in de volgende bestanden:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{ met 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 { openbare const SslProtocols Tls12 = (SslProtocols)0x00000C00; openbare const SslProtocols Tls11 = (SslProtocols)0x00000300; } }
Als u de ondersteuning voor TLS v1.2 wilt opnemen, moet u de bronbestanden in uw project opnemen en vervolgens de protocolversie instellen met de volgende methoden:
-
Toepassingen die op ServicePointManager gebaseerde API's gebruiken, kunnen het protocol als volgt instellen:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Toepassingen die de SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) gebruiken, kunnen de waarde SslProtocols instellen als SslProtocolsExtensions.Tls12.
Als het register dat in de eerste alinea wordt vermeld, is ingesteld en in de toepassing de waarde SslProtocols is ingesteld als SslProtocols.None, wordt het standaardgedrag van het systeem gekozen dat afhankelijk is van de versie Windows besturingssysteem.
Wanneer u de toepassingscode wilt wijzigen om ondersteuning voor TLS v1.2 met .NET Framework 3.5 SP1 in te stellen, moet u ervoor zorgen dat u op computers waarop deze patch niet wordt geïmplementeerd, de volgende uitzonderingen verwerkt:-
Als de hotfix niet is geïnstalleerd, worden op ServicePointManager gebaseerde API's (HTTP, FTP, SMTP) 'System.NotSupportedException: Het aangevraagde beveiligingsprotocol niet ondersteund'. Wanneer de toepassing ServicePointManager.SecurityProtocol belt om de nieuwe waarde in te stellen.
-
Als het hotfix niet is geïnstalleerd, worden op SslStream gebaseerde API's geplaatst wanneer u een van de AuthenticAs* API's belt:
System.ArgumentException: De opgegeven waarde is niet geldig in de 'SslProtocolType' enumeratie.
Parameternaam: sslProtocolType
Opmerking Alleen voor SslStream is een combinatie van Tls12, Tls11 met een van de bestaande Tls, Ssl3, Ssl2 (bijvoorbeeld: Tls12 | Tls11 | Tls) wordt geruisloos gedegradeerd naar de bestaande protocollen (bijvoorbeeld Tls) op een systeem zonder de patch. Het maakt verbinding met Tls zonder de uitzondering te maken.
Meer informatie
Als u TLS v1.1 of v1.2 als standaardbesturingssysteem wilt inschakelen, volgt u de instructies op https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12. Opmerking TLS v1.1 en v1.2 zijn niet beschikbaar in Windows Vista of Windows Server 2008. Als u de standaardinstellingen van het besturingssysteem moet uitschakelen die zijn ingesteld door de registersleutel die eerder is vermeld voor specifieke toepassingen, kan dit worden gedaan door de volgende registersleutel toe te voegen:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<Volledig pad van de .exe voor het bestand>> DWORD 0 C:\MyApp\MyApp.exe DWORD 0
Zie Inleiding tot TLS v1.2 voor meer informatie over TLS v1.2. Nadat u de registersleutel SystemDefaultTlsVersions .NET hebt ingeschakeld, treedt er een ander gedrag op voor elke versie van Windows, zoals wordt weergegeven in de volgende tabel.
Windows versie |
SSL2-client |
SSL2 Server |
SSL3-client |
SSL3 Server |
TLS 1.0-client |
TLS 1.0 Server |
TLS 1.1-client |
TLS 1.1 Server |
TLS 1.2-client |
TLS 1.2 Server |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 en Windows Server 2008 SP2 |
Uit |
Aan |
Aan |
Aan |
Aan |
Aan |
N/B |
N/B |
N/B |
N/B |
Windows 7 SP1 en Windows Server 2008 R2 SP1 |
Uit |
Aan |
Aan |
Aan |
Aan |
Aan |
Uit |
Uit |
Uit |
Uit |
Windows Server 2012 |
Uit |
Uit |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Windows 8.1 en Windows Server 2012 R2 |
Uit |
Uit |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Windows 10 |
Uit |
Uit |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Windows 10 (1511) |
Uit |
Uit |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |
Windows 10 (1607) en Windows Server 2016 |
N/B |
N/B |
Uit |
Uit |
Aan |
Aan |
Aan |
Aan |
Aan |
Aan |