Bewährte Methoden für Transport Layer Security (TLS) mit .NET Framework
Hinweis
Diese Seite enthält TLS-Informationen vom .NET Framework. Wenn Sie nach .NET TLS-Informationen suchen, lesen Sie: TLS/SSL Best Practices
.NET Framework unterstützt die Verwendung des TLS-Protokolls (Transport Layer Security) zum Sichern der Netzwerkkommunikation.
Was ist der Transport Layer Security (TLS)?
Warnung
TLS 1.0 und 1.1 sind von RFC8996 veraltet. Dieses Dokument behandelt nur TLS 1.2 und TLS 1.3.
Das TLS-Protokoll (Transport Layer Security) ist die neueste Version des Standards, die zum Schutz der Daten im Internet entwickelt wurde. TLS 1.3 ist ein Standard, der Sicherheitsverbesserungen gegenüber früheren Versionen umfasst. Dieser Artikel enthält Empfehlungen zur Sicherung von .NET Framework-Anwendungen, die das TLS-Protokoll verwenden.
Wer kann von diesem Dokument profitieren?
- Sie verwenden direkt die System.Net-APIs (z.B. System.Net.Http.HttpClient und System.Net.Security.SslStream).
- Sie verwenden direkt WCF-Clients und -Dienste über den Namespace System.ServiceModel.
TLS-Unterstützung in .NET Framework
.NET Framework ist von Schannel
auf Windows abhängig. Welche Versionen ausgehandelt werden können und welche Version verwendet wird, hängt vom Betriebssystem ab.
Hier ist eine aktualisierte Beispieltabelle mit der höchsten unterstützten TLS-Version für verschiedene Kombinationen von Betriebssystemversionen und .NET Framework-Zielversionen:
.NET Framework-Zielversion | Windows 10 | Windows 11 |
---|---|---|
3,5 | TLS 1.2 | TLS 1.2 |
4.6.2 | TLS 1.2 | TLS 1.3 |
4.7 | TLS 1.2 | TLS 1.3 |
4.7.1 | TLS 1.2 | TLS 1.3 |
4.7.2 | TLS 1.2 | TLS 1.3 |
4.8 | TLS 1.2 | TLS 1.3 |
4.8.1 | TLS 1.2 | TLS 1.3 |
Weitere Informationen finden Sie unter TLS-Protokollversionsunterstützung in Schannel.
Empfehlungen
- Verwenden Sie für TLS 1.3 mindestens .NET Framework 4.8 als Ziel. Überprüfen Sie im Abschnitt Überprüfen des Codes, wie Sie Ihre
target framework
überprüfen können. - Spezifizieren Sie nicht die TLS-Version, d. h. verwenden Sie nicht die Methodenüberladungen von
SslStream
, die einen explizitenSslProtocols
-Parameter annehmen.- Auf diese Weise lässt der Code das Betriebssystem über die TLS-Version entscheiden.
- Wenn Sie ServicePointManager.SecurityProtocol festlegen müssen, legen Sie es auf SecurityProtocolType.SystemDefault fest. Dies verwendet auch die Standardeinstellung des Betriebssystems.
- Wenn Sie die Methodenüberladungen von
SslStream
verwenden müssen, die einen explizitenSslProtocols
-Parameter verwenden, übergeben SieSslProtocols.SystemDefault
als Argument. Dies verwendet auch die Standardeinstellung des Betriebssystems.
- Führen Sie eine gründliche Codeüberprüfung durch, um sicherzustellen, dass Sie keine TLS- oder SSL-Version explizit festlegen.
Warnung
Verwenden Sie nich SslProtocols.Default
, da es die TLS-Version auf SSL3 und TLS 1.0 festlegt, die veraltet sind.
Wenn die TLS-Version in Ihrer App vom Betriebssystem gewählt wird:
- Es werden automatisch neue TLS-Protokolle genutzt, die in Zukunft hinzugefügt werden.
- Das Betriebssystem blockiert Protokolle, die als nicht sicher erkannt werden (z. B. SSL3 und TLS 1.0).
Dieser Artikel erklärt, wie Sie die höchste Sicherheit für die Version von .NET Framework erreichen, auf die Ihre App abzielt und unter der sie ausgeführt wird. Wenn ein Sicherheitsprotokoll und eine Sicherheitsversion von einer App explizit festlegt werden, sind somit jede andere Alternative und das Standardverhalten von .NET Framework und dem Betriebssystem ausgeschlossen. Wenn Sie möchten, dass Ihre App eine TLS 1.3-Verbindung aushandeln kann, wird dies durch das explizite Festlegen auf eine niedrigere Version als TLS 1.3 verhindert.
Wenn Sie keine explizite Angabe einer Protokollversion vermeiden können, wird dringend empfohlen, TLS 1.2 oder TLS 1.3 (was currently considered secure
ist) anzugeben. Eine Anleitung zum Identifizieren und Entfernen von TLS 1.0-Abhängigkeiten finden Sie im Whitepaper Solving the TLS 1.0 Problem (Lösung des TLS 1.0-Problems), das als Download verfügbar ist.
WCF unterstützt TLS 1.2 als Standard in .NET Framework 4.7. Ab .NET Framework 4.7.1 verwendet WCF standardmäßig die vom Betriebssystem konfigurierte Version. Wenn eine Anwendung explizit mit SslProtocols.None
konfiguriert ist, verwendet WCF die Standardeinstellung des Betriebssystems für den NetTcp-Transport.
Fragen zu diesem Dokument können Sie im GitHub-Thema Transport Layer Security (TLS) best practices with the .NET Framework (Bewährte Methoden für TLS mit .NET Framework) stellen.
Überprüfen Ihres Codes und vornehmen von Codeänderungen
Für ASP.NET-Anwendungen überprüfen Sie das Element <system.web><httpRuntime targetFramework>
von web.config, um sicherzustellen, dass Sie die beabsichtigte Version von .NET Framework ansteuern.
Für Windows Forms und andere Anwendungen lesen Sie Vorgehensweise: Erstellen von Projekten für eine bestimmte .NET Framework-Version.
Verwenden Sie die folgenden Abschnitte, um sicherzustellen, dass Sie keine bestimmte TLS- oder SSL-Version verwenden.
Wenn Sie ein Sicherheitsprotokoll explizit festlegen müssen
Wenn Sie explizit ein Sicherheitsprotokoll festlegen müssen, anstatt .NET oder das Betriebssystem die Auswahl treffen zu lassen, wählen Sie die folgenden Sicherheitsprotokolle aus:
- Für .NET Framework 3.5: TLS 1.2
- Für .NET Framework 4.6.2 oder höher: TLS 1.3
Wenn Sie die angegebenen Protokolle in der Enumeration nicht finden können, können Sie diese als Erweiterungsdatei hinzufügen. Siehe unten:
SslProtocolExtensions.cs
namespace System.Security.Authentication
{
public static class SslProtocolsExtensions
{
// For .NET Framework 3.5
public const SslProtocols Tls12 = (SslProtocols)3072;
// For .NET Framework 4.6.2 and later
public const SslProtocols Tls13 = (SslProtocols)12288;
}
}
SecurityProtocolExtensions.cs
using System.Security.Authentication;
namespace System.Net
{
public static class SecurityProtocolTypeExtensions
{
// For .NET Framework 3.5
public const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12;
// For .NET Framework 4.6.2 and later
public const SecurityProtocolType Tls13 = (SecurityProtocolType)SslProtocolsExtensions.Tls13;
}
}
Weitere Informationen finden Sie unter Unterstützung für Standardversionen des TLS-Systems im .NET Framework 3.5 unter Windows 8.1 und Windows Server 2012 R2.
Für System.Net-APIs (HttpClient, SslStream)
Wenn Ihre App auf .NET Framework 4.7 oder höhere Versionen abzielt
In den folgenden Abschnitten wird gezeigt, wie Sie Ihre Anwendung für die Verwendung von currently considered secure versions
von TLS konfigurieren. (TLS 1.2, TLS 1.3)
Für HttpClient und HttpWebRequest
Bei Verwendung von .NET Framework 4.7 und höheren Versionen nutzt ServicePointManager das Standardsicherheitsprotokoll, das im Betriebssystem konfiguriert ist. Damit die Standardauswahl des Betriebssystems übernommen wird, sofern möglich, legen Sie keinen Wert für die ServicePointManager.SecurityProtocol-Eigenschaft fest. Diese ist standardmäßig auf SecurityProtocolType.SystemDefault festgelegt.
Da die Einstellung für SecurityProtocolType.SystemDefault bewirkt, dass ServicePointManager das vom Betriebssystem konfigurierte Standardsicherheitsprotokoll verwendet, wird Ihre Anwendung je nach Betriebssystem möglicherweise etwas anders ausgeführt. Beispielsweise verwendet Windows 10 TLS 1.2, während Windows 11 TLS 1.3 verwendet.
Für SslStream
SslStream wird bei Verwendung von .NET Framework 4.7 oder höheren Versionen standardmäßig auf die Vorgabe des Betriebssystems gesetzt, welches das beste Sicherheitsprotokoll und die beste Version auswählt. Damit standardmäßig die beste Wahl des Betriebssystems übernommen wird, verwenden Sie möglichst nicht die Methodenüberladungen von SslStream, die einen expliziten SslProtocols-Parameter übernehmen. Andernfalls übergeben Sie SslProtocols.None. Die Verwendung von Default wird nicht empfohlen. Durch die Einstellung SslProtocols.Default
wird die Verwendung von SSL 3.0/TLS 1.0 erzwungen und TLS 1.2 nicht genutzt.
Legen Sie (bei HTTP-Netzwerken) keinen Wert für die SecurityProtocol-Eigenschaft fest.
Verwenden Sie (bei TCP-Socketnetzwerken) keine Methodenüberladungen von SslStream, die einen expliziten SslProtocols-Parameter übernehmen. Wenn Sie Ihre App erneut auf .NET Framework 4.7 oder höhere Versionen ausrichten, folgen Sie der Empfehlung in den bewährten Methoden.
Für WCF-Anwendungen
Wenn Ihre App auf .NET Framework 4.7 oder höhere Versionen abzielt
In den folgenden Abschnitten wird gezeigt, wie Sie Ihre Anwendung für die Verwendung von currently considered secure versions
von TLS konfigurieren. (TLS 1.2, TLS 1.3)
Mithilfe des TCP-Transport unter Berücksichtigung der Transportsicherheit mit Zertifikatanmeldeinformationen
WCF verwendet den gleichen Netzwerkstack wie der Rest von .NET Framework.
Wenn Sie auf 4.7.1 abzielen, ist WCF so konfiguriert, dass das Betriebssystem standardmäßig das beste Sicherheitsprotokoll auswählen kann, sofern es nicht explizit an einem der folgenden Orte festgelegt ist:
- In der Konfigurationsdatei Ihrer Anwendung
- Oder, im Quellcode Ihrer Anwendung
.NET Framework 4.7 und höhere Versionen sind standardmäßig für die Verwendung von TLS 1.2 konfiguriert und erlauben Verbindungen mit TLS 1.1 oder TLS 1.0. Konfigurieren Sie WCF, damit das Betriebssystem das beste Sicherheitsprotokoll auswählen kann, indem Sie für Ihre Bindung die Verwendung von SslProtocols.None festlegen. Dies kann auf SslProtocols festgelegt werden. SslProtocols.None
kann von Transport aus aufgerufen werden. NetTcpSecurity.Transport
kann von Security aus aufgerufen werden.
Bei Verwendung einer benutzerdefinierten Bindung:
- Konfigurieren Sie WCF, damit das Betriebssystem das beste Sicherheitsprotokoll auswählen kann, indem Sie für SslProtocols.None die Verwendung von SslProtocols festlegen.
- Oder konfigurieren Sie das Protokoll, das mit dem Konfigurationspfad
system.serviceModel/bindings/customBinding/binding/sslStreamSecurity:sslProtocols
verwendet wird.
Wenn Sie keine benutzerdefinierte Bindung verwenden und Ihre WCF-Bindung über die Konfiguration einstellen, legen Sie das verwendete Protokoll mit dem Konfigurationspfad system.serviceModel/bindings/netTcpBinding/binding/security/transport:sslProtocols
fest.
Verwenden der Nachrichtensicherheit mit Zertifikatanmeldeinformationen
.NET Framework 4.7 und höhere Versionen verwenden standardmäßig das in der SecurityProtocol-Eigenschaft angegebene Protokoll. Wenn die AppContextSwitch Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols
auf true
gesetzt ist, wählt WCF das beste Protokoll bis TLS 1.0.
Wenn Ihre App auf eine höhere .NET Framework-Version als 4.7 abzielt
In den folgenden Abschnitten wird gezeigt, wie Sie Ihre Anwendung für die Verwendung von currently considered secure versions
von TLS konfigurieren. (TLS 1.2, TLS 1.3)
Mithilfe von .NET Framework 4.6.2 unter Berücksichtigung der TCP-Transportsicherheit mit Zertifikatanmeldeinformationen
Das WCF-Framework wählt automatisch das höchste bis TLS 1.2 verfügbare Protokoll, es sei denn, Sie konfigurieren explizit eine Protokollversion. Weitere Informationen finden Sie im vorhergehenden Abschnitt Für WCF-TCP-Transport unter Berücksichtigung der Transportsicherheit mit Zertifikatanmeldeinformationen.
Mithilfe von .NET Framework 3.5 unter Berücksichtigung der TCP-Transportsicherheit mit Zertifikatanmeldeinformationen
Diese Versionen des WCF-Frameworks werden explizit für die Verwendung der Werte SSL 3.0 und TLS 1.0 angegeben. Diese Werte können nicht geändert werden. Sie müssen auf .NET Framework 4.6.2 oder höhere Versionen aktualisieren und diese dann als Ziel wählen, um TLS 1.2 verwenden zu können.
Konfigurieren der Sicherheit über AppContext-Switches (für .NET Framework 4.6.2 oder höhere Versionen)
Die in diesem Abschnitt beschriebenen AppContext-Switches sind relevant, wenn Ihre App auf .NET Framework 4.6.2 oder höher abzielt und darunter ausgeführt wird. Ob standardmäßig oder explizit, die Switches sollten nach Möglichkeit auf false
festgelegt sein. Wenn Sie die Sicherheitseinstellungen über einen oder beide Switches festlegen möchten, dann geben Sie in Ihrem Code keinen Wert für das Sicherheitsprotokoll an; dies würde die von den Switches vorgenommenen Einstellungen überschreiben.
Für System.Net-APIs (HttpClient, SslStream)
Die Switches haben den gleichen Effekt, unabhängig davon, ob Sie HTTP-Netzwerke (ServicePointManager) oder TCP-Socketnetzwerke (SslStream) betreiben.
Switch.System.Net.DontEnableSchUseStrongCrypto
Der Wert false
für Switch.System.Net.DontEnableSchUseStrongCrypto
bewirkt, dass Ihre App starke Kryptographie verwendet. Durch den Wert false
für DontEnableSchUseStrongCrypto
werden sicherere Netzwerkprotokolle (TLS 1.2 und TLS 1.1) verwendet und nicht sichere Protokolle blockiert. Weitere Informationen finden Sie unter Das Flag SCH_USE_STRONG_CRYPTO. Ein Wert true
deaktiviert eine starke Kryptographie für Ihre App. Diese Option wirkt sich nur auf Clientverbindungen (ausgehende Verbindungen) in Ihrer Anwendung aus.
Wenn Ihre App auf .NET Framework 4.6.2 oder höhere Versionen abzielt, wird dieser Switch standardmäßig auf false
gesetzt. Das ist der empfohlene sichere Standard. Wenn Ihre App auf .NET Framework 4.6.2 ausgeführt wird, aber auf eine frühere Version abzielt, wird der Switch standardmäßig auf true
gesetzt. In diesem Fall sollten Sie ihn explizit auf false
setzen.
DontEnableSchUseStrongCrypto
sollte nur dann den Wert true
aufweisen, wenn Sie sich mit älteren Diensten verbinden müssen, die keine starke Kryptographie unterstützen und nicht aktualisiert werden können.
Switch.System.Net.DontEnableSystemDefaultTlsVersions
Der Wert false
für Switch.System.Net.DontEnableSystemDefaultTlsVersions
bewirkt, dass in Ihrer App das Protokoll vom Betriebssystem ausgewählt werden kann. Der Wert true
bewirkt, dass Ihre App Protokolle verwendet, die vom .NET Framework ausgewählt wurden.
Wenn Ihre App auf .NET Framework 4.7 oder höhere Versionen ausgerichtet ist, wird dieser Switch standardmäßig auf false
festgelegt. Das ist der empfohlene sichere Standard. Wenn Ihre App unter .NET Framework 4.7 oder höheren Versionen ausgeführt wird, aber auf eine frühere Version abzielt, wird der Switch standardmäßig auf true
gesetzt. In diesem Fall sollten Sie ihn explizit auf false
setzen.
Für WCF-Anwendungen
Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols
Der Wert false
für Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols
bewirkt, dass Ihre Anwendung den in ServicePointManager.SecurityProtocols
definierten Wert für die Nachrichtensicherheit unter Verwendung von Zertifikatanmeldeinformationen verwendet. Durch den Wert true
wird das höchste verfügbare Protokoll, bis zu TLS 1.0, verwendet.
Für Anwendungen, die auf .NET Framework 4.7 und höhere Versionen abzielen, wird dieser Wert standardmäßig auf false
festgelegt. Für Anwendungen, die auf .NET Framework 4.6.2 und frühere Versionen abzielen, wird dieser Wert standardmäßig auf true
festgelegt.
Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions
Der Wert false
für Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions
legt in der Standardkonfiguration fest, dass das Protokoll vom Betriebssystem ausgewählt werden kann. Der Wert true
legt die Standardeinstellung auf das höchste verfügbare Protokoll, bis zu TLS 1.2, fest.
Für Anwendungen, die auf .NET Framework 4.7.1 und höhere Versionen abzielen, wird dieser Wert standardmäßig auf false
festgelegt. Für Anwendungen, die auf .NET Framework 4.7 und frühere Versionen abzielen, wird dieser Wert standardmäßig auf true
festgelegt.
Weitere Informationen über TLS-Protokolle finden Sie unter Entschärfung: TLS-Protokolle. Weitere Informationen über AppContext
-Switches finden Sie unter <AppContextSwitchOverrides> Element
.
Konfigurieren der Sicherheit über die Windows-Registrierung
Warnung
Das Festlegen von Registrierungsschlüsseln betrifft alle Anwendungen auf dem System. Verwenden Sie diese Option nur, wenn Sie die vollständige Kontrolle über den Computer innehaben und die Änderungen an der Registrierung kontrollieren können.
Wenn die Einstellung mindestens eines AppContext
-Switches nicht möglich ist, können Sie die Sicherheitsprotokolle für Ihre App mit den in diesem Abschnitt beschriebenen Windows-Registrierungsschlüsseln steuern. Möglicherweise können Sie einen oder beide AppContext
-Switches nicht verwenden, wenn Ihre App unter .NET Framework-Version 3.5 ausgeführt wird oder Sie die Konfigurationsdatei nicht bearbeiten können. Wenn Sie die Sicherheit mit der Registrierung konfigurieren möchten, geben Sie keinen Sicherheitsprotokollwert in Ihrem Code an; dies würde die Registrierungseinstellung außer Kraft setzen.
Die Namen der Registrierungsschlüssel ähneln den Namen der entsprechenden AppContext
-Switches, jedoch ohne DontEnable
vor dem Namen. Der AppContext
-Switch DontEnableSchUseStrongCrypto
ist beispielsweise der Registrierungsschlüssel SchUseStrongCrypto.
Diese Schlüssel sind in allen .NET Framework-Versionen verfügbar.
Alle unten beschriebenen Registrierungsschlüssel haben den gleichen Effekt, unabhängig davon, ob Sie HTTP-Netzwerke (ServicePointManager) oder TCP-Socketnetzwerke (SslStream) betreiben.
SchUseStrongCrypto
Der Registrierungseintrag HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\<VERSION>: SchUseStrongCrypto
hat einen Wert vom Typ DWORD. Der Wert 1 bewirkt, dass Ihre App eine starke Kryptographie verwendet. Bei der starken Kryptographie werden sicherere Netzwerkprotokolle (TLS 1.2 und TLS 1.1) verwendet und nicht sichere Protokolle blockiert. Der Wert 0 deaktiviert die starke Kryptographie. Weitere Informationen finden Sie unter Das Flag SCH_USE_STRONG_CRYPTO. Diese Registrierungseinstellung wirkt sich nur auf Clientverbindungen (ausgehende Verbindungen) in Ihrer Anwendung aus.
Wenn Ihre App auf .NET Framework 4.6 oder höhere Versionen ausgerichtet ist, wird dieser Schlüssel standardmäßig auf 1 festgelegt. Das ist der empfohlene sichere Standard. Wenn Ihre App auf .NET Framework 4.5.2 oder Vorgängerversionen ausgerichtet ist, wird der Schlüssel standardmäßig auf 0 festgelegt. In diesem Fall sollten Sie dessen Wert explizit auf 1 setzen.
Dieser Schlüssel sollte nur dann den Wert 0 aufweisen, wenn Sie sich mit älteren Diensten verbinden müssen, die keine starke Kryptographie unterstützen und nicht aktualisiert werden können.
SystemDefaultTlsVersions
Der Registrierungseintrag HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\<VERSION>: SystemDefaultTlsVersions
hat einen Wert vom Typ DWORD. Der Wert 1 bewirkt, dass in Ihrer App das Protokoll vom Betriebssystem ausgewählt werden kann. Der Wert 0 bewirkt, dass Ihre App Protokolle verwendet, die vom .NET Framework ausgewählt wurden.
<VERSION>
muss v4.0.30319 (für .NET Framework 4 und höher) oder v2.0.50727 (für .NET Framework 3.5) sein.
Wenn Ihre App auf .NET Framework 4.7 oder höhere Versionen ausgerichtet ist, wird dieser Schlüssel standardmäßig auf 1 festgelegt. Das ist der empfohlene sichere Standard. Wenn Ihre App auf .NET Framework 4.6.1 oder Vorgängerversionen ausgerichtet ist, wird der Schlüssel standardmäßig auf 0 festgelegt. In diesem Fall sollten Sie dessen Wert explizit auf 1 setzen.
Weitere Informationen finden Sie unter Kumulatives Update für Windows 10 Version 1511 und Windows Server 2016 Technical Preview 4: 10. Mai 2016.
Weitere Informationen für die Verwendung mit .NET Framework 3.5.1 finden Sie unter Unterstützung für Standardversionen des TLS-Systems im .NET Framework 3.5.1 unter Windows 7 SP1 und Server 2008 R2 SP1.
Die folgende .REG-Datei legt die Registrierungseinträge und deren Varianten auf die sichersten Werte fest:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
Konfigurieren von Schannel-Protokollen in der Windows-Registrierung
Sie können die Registrierung verwenden, um die Protokolle, die Ihre Client- und/oder Server-App aushandelt, genau zu steuern. Die Vernetzung Ihrer App erfolgt über Schannel (eine andere Bezeichnung für Secure Channel). Durch die Konfiguration von Schannel
können Sie das Verhalten Ihrer App konfigurieren.
Beginnen Sie mit dem Registrierungsschlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
. Unter diesem Schlüssel können Sie alle Unterschlüssel im Satz TLS 1.2
, TLS 1.3
erstellen. Unter jedem dieser Unterschlüssel können Sie die Unterschlüssel Client
und/oder Server
anlegen. Unter Client
und Server
können Sie die DWORD-Werte DisabledByDefault
(0 oder 1) und Enabled
(0 oder 1) erstellen.
Weitere Informationen finden Sie unter: TLS Registry Settings - Schannel
Das Flag SCH_USE_STRONG_CRYPTO
Wenn es aktiviert ist (standardmäßig durch eine AppContext
-Option oder durch die Windows-Registrierung), verwendet .NET Framework das Flag SCH_USE_STRONG_CRYPTO
, wenn Ihre App eine TLS-Verbindung zu einem Server initiiert. .NET Framework übergibt das Flag an Schannel
und weist es an, bekannte schwache Kryptografiealgorithmen, Verschlüsselungssuiten und TLS/SSL-Protokollversionen zu deaktivieren, die andernfalls für eine bessere Interoperabilität aktiviert werden könnten. Weitere Informationen finden Sie unter:
Für Clientverbindungen (ausgehende Verbindungen) wird das Flag SCH_USE_STRONG_CRYPTO
ebenfalls an Schannel
übergeben, wenn Sie explizit die Enumerationswerte Tls11
oder Tls12
von SecurityProtocolType oder SslProtocols verwenden. Das Flag SCH_USE_STRONG_CRYPTO
wird nur für Verbindungen verwendet, bei denen Ihre Anwendung die Rolle des Clients übernimmt. Sie können schwache Protokolle und Algorithmen deaktivieren, wenn Ihre Anwendungen die Rolle des Servers übernehmen, indem Sie die computerweiten Schannel
-Registrierungseinstellungen konfigurieren.