Die .NET Framework-Version 3.5.1 und frühere Versionen bieten keine Unterstützung für Anwendungen zur Verwendung von TLS -System standardversionen (Transport Layer Security) als kryptografisches Protokoll. Dieses Update ermöglicht die Verwendung von TLS v1.2 in .NET Framework 3.5.1.
Hinweis Dieser Inhalt wurde über das Update Windows verfügbar gemacht. Um den Inhalt zu erhalten, suchen sie Windows Aktualisieren nach den neuesten .NET Framework Updates. Wenn Ihr System über Windows Update vollständig auf dem neuesten Stand ist, müssen Sie keine weiteren Maßnahmen ergreifen.
Lösung
Informationen zum Download
Der Hotfix, der KB3154518 entspricht, wurde durch die neuesten Updates von .NET Framework ersetzt, die alle Fixes enthalten, die zuvor in KB3154518 enthalten waren. Es wird empfohlen, die neuesten Updates ihres .NET Framework. In diesem Bereich wurden die folgenden Verbesserungen vorgenommen:
-
Für die folgenden Registrierungsschlüssel kann die Verwendung der Betriebssystemstandardwerte für SSL und TLS anstelle der hartcodierten Standardwerte von .NET Framework für eine auf dem Computer ausgeführte verwaltete Anwendung festgelegt werden.
-
Für 64-Bit-Betriebssysteme:[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-Bit-Betriebssysteme:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Hinweis Wenn für die Anwendung die Option ServicePointManager.SecureProtocol per Code oder mithilfe von Konfigurationsdateien auf einen bestimmten Wert festgelegt ist oder wenn die SslStream.AuthenticateAs*-APIs zum Angeben einer bestimmten SslProtocols-Enumeration verwendet werden, hat die Registrierungseinstellung keine Auswirkung.
-
-
Darüber hinaus wurde die SslProtocolsExtensions-Enumeration hinzugefügt, die Sie als Option zum Festlegen von TLS v1.2, TLS v1.1 sowie von Betriebssystemstandardwerten für die ServicePointManager.SecurityProtocol-Eigenschaft verwenden können, wenn Sie .NET Framework Version 2.0 SP2 ausführen. (Informationen zur Verwendung der Erweiterungen finden Sie im Abschnitt Entwicklerleitfade.)
Hinweis Windows Vista SP2 und Windows Server 2008 SP2 keine TLS-Protokollversionen (Transport Layer Security) unterstützen, die neuer als 1.0 sind. Verwaltete .NET Framework 2.0 SP2-Anwendungen, die unter Windows Vista SP2 oder Windows Server 2008 SP2 ausgeführt werden, können TLS 1.2 oder TLS 1.1 nicht verwenden, auch wenn diese Protokolle in der ServicePointManager.SecurityProtocol-Eigenschaft festgelegt sind.
Wenn Sie weitere Informationen zum Herunterladen von Microsoft-Supportdateien erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzeigen zu können:
119591 Abrufen von Microsoft-Supportdateien von Onlinediensten Microsoft hat diese Datei auf Viren überprüft. Dazu wurde die neueste Software zur Virenerkennung verwendet, die zum Zeitpunkt der Bereitstellung verfügbar war. Die Datei befindet sich auf Servern mit verstärkter Sicherheit, wodurch nicht autorisierte Änderungen an der Datei weitestgehend verhindert werden.
Entwicklerleitfade
Die Definition der neuen Erweiterungen ist in den folgenden Dateien enthalten:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{ mithilfe von System.Security.Authentication; öffentliche statische Klasse 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
{ Öffentliche statische Klasse SslProtocolsExtensions { public const SslProtocols Tls12 = (SslProtocols)0x00000C00; public const SslProtocols Tls11 = (SslProtocols)0x00000300; } }
Um die Unterstützung für TLS v1.2 zu verwenden, schließen Sie die Quelldateien in Ihr Projekt ein, und legen Sie dann die Protokollversion mit den folgenden Methoden festgelegt:
-
Anwendungen, die ServicePointManager-basierte APIs verwenden, können das Protokoll wie folgt festlegen:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Anwendungen, die die SSLStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean)-Überladung verwenden, können den SslProtocols-Wert als SslProtocolsExtensions.Tls12 festlegen.
Wenn die im ersten Absatz erwähnte Registrierungseinstellung und der SslProtocols-Wert in der Anwendung als SslProtocols.None festgelegt ist, hängt das ausgewählte Standardverhalten des Systems von der Windows-Version ab.
Wenn Sie den Anwendungscode ändern, um die Unterstützung für TLS v1.2 mit .NET Framework 3.5 SP1 zu aktivieren, sollten Sie außerdem sicherstellen, dass Sie die folgenden Ausnahmen auf Computern ansprechen, auf denen dieser Patch nicht bereitgestellt wird:-
Wenn der Hotfix nicht installiert ist, wird von ServicePointManager-basierten APIs (HTTP, FTP, SMTP) der Fehler "System.NotSupportedException: Das angeforderte Sicherheitsprotokoll wird nicht unterstützt" ausgelöst, wenn die Anwendung ServicePointManager.SecurityProtocol aufruft, um den neuen Wert festlegen.
-
Wenn der Hotfix nicht installiert ist, werden von sslStream-basierten APIs Ausnahmen ausgelöst, wenn sie eine der AuthenticateAs*-APIs aufrufen:
System.ArgumentException: Der angegebene Wert ist in der "SslProtocolType"-Enumeration ungültig.
Parametername: sslProtocolType
Hinweis: Nur sslStream, eine Kombination von Tls12, Tls11 mit einem der vorhandenen Tls, Ssl3, Ssl2 (z. B.: Tls12 | Tls11 | Tls) wird ohne den Patch ohne den Patch automatisch auf die vorhandenen Protokolle (z. B. Tls) heruntergestuft. Es wird eine Verbindung mit Tls hergestellt, ohne dass die Ausnahme ausgelöst wird.
Weitere Informationen
Zum Aktivieren von TLS v1.1 oder v1.2 als Betriebssystem-Standardeinstellungen folgen Sie den Anweisungen unter https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12. Hinweis TLS v1.1 und v1.2 sind in Windows Vista oder Windows Server 2008 nicht verfügbar. Wenn Sie die Standardwerte des Betriebssystems deaktivieren müssen, die durch den im Abschnitt "Auflösung" für bestimmte Anwendungen erwähnten Registrierungsschlüssel festgelegt werden, können Sie dazu den folgenden Registrierungsschlüssel hinzufügen:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<Vollständiger Pfad des .exe für die Datei>> DWORD 0 C:\MyApp\MyApp.exe DWORD 0
Weitere Informationen zu TLS v1.2 finden Sie unter Einführung in TLS v1.2. Nachdem Sie den Registrierungsschlüssel SystemDefaultTlsVersions .NET aktiviert haben, tritt für jede Version von Windows ein anderes Verhalten auf, wie in der folgenden Tabelle dargestellt.
Windows-Version |
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 und Windows Server 2008 SP2 |
Aus |
Ein |
Ein |
Ein |
Ein |
Ein |
N/A |
N/A |
N/A |
N/A |
Windows 7 SP1 und Windows Server 2008 R2 SP1 |
Aus |
Ein |
Ein |
Ein |
Ein |
Ein |
Aus |
Aus |
Aus |
Aus |
Windows Server 2012 |
Aus |
Aus |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Windows 8.1 und Windows Server 2012 R2 |
Aus |
Aus |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Windows 10 |
Aus |
Aus |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Windows 10 (1511) |
Aus |
Aus |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |
Windows 10 (1607) und Windows Server 2016 |
N/A |
N/A |
Aus |
Aus |
Ein |
Ein |
Ein |
Ein |
Ein |
Ein |