Beheben des Problems mit TLS 1.0, zweite AusgabeSolving the TLS 1.0 Problem, 2nd Edition

Von Andrew MarshallBy Andrew Marshall
Principal Security Program ManagerPrincipal Security Program Manager
Microsoft CorporationMicrosoft Corporation

KurzfassungExecutive Summary

Dieses Dokument enthält die neuesten Informationen zur schnellen Identifizierung und Entfernung von Abhängigkeiten im Zusammenhang mit der TLS-Protokollversion 1.0 (Transport Layer Security) in auf Microsoft-Betriebssystemen basierender Software, gefolgt von Details zu Produktänderungen und neuen Features, die von Microsoft zum Schutz Ihrer Kunden und Onlinedienste bereitgestellt werden.This document presents the latest guidance on rapidly identifying and removing Transport Layer Security (TLS) protocol version 1.0 dependencies in software built on top of Microsoft operating systems, following up with details on product changes and new features delivered by Microsoft to protect your own customers and online services. Es ermöglicht die Entwicklung eines Plans für die Migration zu einer Netzwerkumgebung mit TLS 1.2 und höheren Versionen.It is intended to be used as a starting point for building a migration plan to a TLS 1.2+ network environment. Die hier erläuterten Lösungen können ggf. auch verwendet werden, um TLS 1.0 aus Microsoft-fremden Betriebssystemen oder Kryptografiebibliotheken zu entfernen, dies ist jedoch kein zentraler Aspekt des Dokuments.While the solutions discussed here may carry over and help with removing TLS 1.0 usage in non-Microsoft operating systems or crypto libraries, they are not a focus of this document.

TLS 1.0 ist ein Sicherheitsprotokoll, das erstmal 1999 definiert wurde, um Verschlüsselungskanäle über Computernetzwerke einzurichten.TLS 1.0 is a security protocol first defined in 1999 for establishing encryption channels over computer networks. Von Microsoft wurde dieses Protokoll seit Windows XP/Server 2003 unterstützt.Microsoft has supported this protocol since Windows XP/Server 2003. TLS 1.0 wird in modernen Betriebssystemen zwar nicht mehr als Standardsicherheitsprotokoll verwendet, aus Gründen der Abwärtskompatibilität aber weiterhin unterstützt.While no longer the default security protocol in use by modern OSes, TLS 1.0 is still supported for backwards compatibility. Aufgrund von veränderten gesetzlichen Anforderungen sowie neuen Sicherheitsrisiken in TLS 1.0 ist es für Unternehmen sinnvoll, TLS 1.0 vollständig zu deaktivieren.Evolving regulatory requirements as well as new security vulnerabilities in TLS 1.0 provide corporations with the incentive to disable TLS 1.0 entirely.

Microsoft empfiehlt Kunden, dieses Problem proaktiv anzugehen, indem sie TLS 1.0-Abhängigkeiten aus ihren Umgebungen entfernen und TLS 1.0 auf der Betriebssystemebene deaktivieren, sofern möglich.Microsoft recommends customers get ahead of this issue by removing TLS 1.0 dependencies in their environments and disabling TLS 1.0 at the operating system level where possible. Angesichts der langjährigen Unterstützung von TLS 1.0 durch die Softwarebranche sollte jeder Plan zur Einstellung von TLS 1.0 unbedingt Folgendes umfassen:Given the length of time TLS 1.0 has been supported by the software industry, it is highly recommended that any TLS 1.0 deprecation plan include the following:

  • Codeanalyse zur Ermittlung/Behandlung hartcodierter Vorkommen von TLS 1.0 oder älterer SicherheitsprotokolleCode analysis to find/fix hardcoded instances of TLS 1.0 or older security protocols.

  • Überprüfung von Netzwerkendpunkten sowie Datenverkehrsanalyse zur Erkennung von Betriebssystemen mit TLS 1.0 oder älteren ProtokollenNetwork endpoint scanning and traffic analysis to identify operating systems using TLS 1.0 or older protocols.

  • Umfassende Regressionstests für Ihren gesamten Anwendungsstapel mit deaktiviertem TLS 1.0Full regression testing through your entire application stack with TLS 1.0 disabled.

  • Migration älterer Betriebssysteme und Entwicklungsbibliotheken/-frameworks zu Versionen mit standardmäßiger TLS 1.2-AushandlungMigration of legacy operating systems and development libraries/frameworks to versions capable of negotiating TLS 1.2 by default.

  • Übergreifende Kompatibilitätstests für Betriebssysteme, die von Ihrem Unternehmen verwendet werden, um Probleme im Zusammenhang mit der TLS 1.2-Unterstützung zu identifizierenCompatibility testing across operating systems used by your business to identify any TLS 1.2 support issues.

  • Abstimmung mit Ihren Geschäftspartnern und Kunden, um sie über die Einstellung von TLS 1.0 zu informierenCoordination with your own business partners and customers to notify them of your move to deprecate TLS 1.0.

  • Ermittlung der Clients, die nach der Deaktivierung von TLS 1.0 möglicherweise keine Verbindung mit Ihren Servern mehr herstellen könnenUnderstanding which clients may no longer be able to connect to your servers once TLS 1.0 is disabled.

Dieses Dokument enthält Empfehlungen, die Ihnen dabei helfen, technische Hürden im Zusammenhang mit der Deaktivierung von TLS 1.0 zu beseitigen und gleichzeitig die Auswirkungen dieser Änderung auf Ihre eigenen Kunden besser zu verstehen.The goal of this document is to provide recommendations which can help remove technical blockers to disabling TLS 1.0 while at the same time increasing visibility into the impact of this change to your own customers. Die entsprechenden Untersuchungen tragen dazu bei, die geschäftlichen Auswirkungen des nächsten Sicherheitsrisikos in TLS 1.0 zu verringern.Completing such investigations can help reduce the business impact of the next security vulnerability in TLS 1.0. Im Kontext dieses Dokuments schließt die Einstellung von TLS 1.0 auch die Einstellung von TLS 1.1 mit ein.For the purposes of this document, references to the deprecation of TLS 1.0 also include TLS 1.1.

Entwickler von Unternehmenssoftware sind aus strategischen Gründen darum bemüht, zukunftssicherere und flexiblere Lösungen (Stichwort: kryptografische Flexibilität) einzuführen, um für zukünftige Kompromittierungen von Sicherheitsprotokollen gewappnet zu sein.Enterprise software developers have a strategic need to adopt more future-safe and agile solutions (otherwise known as Crypto Agility) to deal with future security protocol compromises. In diesem Dokument werden zwar flexible Lösungen für die Beseitigung der TLS-Hartcodierung vorgeschlagen, auf Lösungen mit weitergehender kryptografischer Flexibilität wird jedoch nicht eingegangen.While this document proposes agile solutions to the elimination of TLS hardcoding, broader Crypto Agility solutions are beyond the scope of this document.

Der aktuelle Stand der TLS 1.0-Implementierung von MicrosoftThe Current State of Microsoft's TLS 1.0 implementation

Die TLS 1.0-Implementierung von Microsoft weist keine bekannten Sicherheitsrisiken auf.Microsoft's TLS 1.0 implementation is free of known security vulnerabilities. Aufgrund der Gefahr zukünftiger Protokollherabstufungsangriffe und anderer Sicherheitsrisiken von TLS 1.0, die nicht speziell mit der Implementierung von Microsoft zusammenhängen, empfiehlt es sich, Abhängigkeiten von allen Sicherheitsprotokollen vor TLS 1.2 (TLS 1.1/1.0/SSLv3/SSLv2) nach Möglichkeit zu entfernen.Due to the potential for future protocol downgrade attacks and other TLS 1.0 vulnerabilities not specific to Microsoft's implementation, it is recommended that dependencies on all security protocols older than TLS 1.2 be removed where possible (TLS 1.1/1.0/ SSLv3/SSLv2).

Im Zuge der Planung dieser Migration zu TLS 1.2 und höheren Versionen müssen sich Entwickler und Systemadministratoren bewusst sein, dass die Protokollversion möglicherweise in von Mitarbeitern und Partnern entwickelten Anwendungen hartcodiert wurde.In planning for this migration to TLS 1.2+, developers and system administrators should be aware of the potential for protocol version hardcoding in applications developed by their employees and partners. „Hartcodiert“ bedeutet in diesem Zusammenhang, dass die TLS-Version auf eine veraltete und im Vergleich zu neueren Versionen unsicherere Version festgelegt wurde.Hardcoding here means that the TLS version is fixed to a version that is outdated and less secure than newer versions. Neuere TLS-Versionen als die hartcodierte Version können nicht ohne Änderung des betreffenden Programms verwendet werden.TLS versions newer than the hardcoded version cannot be used without modifying the program in question. Dieses Problem erfordert Quellcodeänderungen und die Bereitstellung von Softwareupdates.This class of problem cannot be addressed without source code changes and software update deployment. Das Hartcodieren der Protokollversion wurde in der Vergangenheit häufig zu Test- und Unterstützungszwecken verwendet, da die TLS in vielen Browsern und Betriebssystemen unterschiedlich unterstützt wurde.Protocol version hardcoding was commonplace in the past for testing and supportability purposes as many different browsers and operating systems had varying levels of TLS support.

Sicherstellen der Unterstützung von TLS 1.2 in den bereitgestellten BetriebssystemenEnsuring support for TLS 1.2 across deployed operating systems

Viele Betriebssysteme verfügen über veraltete Standardwerte für die TLS-Version oder über Obergrenzen, die berücksichtigt werden müssen.Many operating systems have outdated TLS version defaults or support ceilings that need to be accounted for. Ab Windows 8/Server 2012 ist TLS 1.2 die Standardversion des Sicherheitsprotokolls:Usage of Windows 8/Server 2012 or later means that TLS 1.2 will be the default security protocol version:

Abbildung 1: Unterstützung des Sicherheitsprotokolls nach BetriebssystemversionFigure 1: Security Protocol Support by OS Version

Windows-BetriebssystemWindows OS SSLv2SSLv2 SSLv3SSLv3 TLS 1.0TLS 1.0 TLS 1.1TLS 1.1 TLS 1.2TLS 1.2
Windows VistaWindows Vista AktiviertEnabled AktiviertEnabled StandardDefault Nicht unterstütztNot Supported Nicht unterstütztNot Supported
Windows Server 2008Windows Server 2008 AktiviertEnabled AktiviertEnabled StandardDefault Deaktiviert*Disabled* Deaktiviert*Disabled*
Windows 7 (WS2008 R2)Windows 7 (WS2008 R2) AktiviertEnabled AktiviertEnabled StandardDefault Deaktiviert*Disabled* Deaktiviert*Disabled*
Windows 8 (WS2012)Windows 8 (WS2012) DisabledDisabled AktiviertEnabled AktiviertEnabled AktiviertEnabled StandardDefault
Windows 8.1 (WS2012 R2)Windows 8.1 (WS2012 R2) DisabledDisabled AktiviertEnabled AktiviertEnabled AktiviertEnabled StandardDefault
Windows 10Windows 10 DisabledDisabled AktiviertEnabled AktiviertEnabled AktiviertEnabled StandardDefault
Windows Server 2016Windows Server 2016 Nicht unterstütztNot Supported DisabledDisabled AktiviertEnabled AktiviertEnabled StandardDefault

* TLS 1.1/1.2 kann unter Windows Server 2008 über dieses optionale Windows Update-Paket aktiviert werden.*TLS 1.1/1.2 can be enabled on Windows Server 2008 via this optional Windows Update package.

Weitere Informationen zur Einstellung von TLS 1.0/1.1 in Internet Explorer/Edge finden Sie unter Modernisieren von TLS-Verbindungen in Microsoft Edge und Internet Explorer 11, Anstehende Änderungen mit Auswirkungen auf die Websitekompatibilität für Microsoft Edge und Deaktivieren von TLS 1.0 und TLS 1.1 im neuen Edge-Browser.For more information on TLS 1.0/1.1 deprecation in IE/Edge, see Modernizing TLS connections in Microsoft Edge and Internet Explorer 11, Site compatibility-impacting changes coming to Microsoft Edge and Disabling TLS/1.0 and TLS/1.1 in the new Edge Browser

Mithilfe der Handshake-Simulation unter Qualys SSL Labs lässt sich schnell ermitteln, welche TLS-Version von verschiedenen Clients beim Herstellen einer Verbindung mit Ihren Onlinedienste angefordert wird.A quick way to determine what TLS version will be requested by various clients when connecting to your online services is by referring to the Handshake Simulation at Qualys SSL Labs. Diese Simulation umfasst herstellerübergreifende Kombinationen aus Clientbetriebssystem und Browser.This simulation covers client OS/browser combinations across manufacturers. Ein ausführliches Beispiel zur Veranschaulichung der TLS-Protokollversionen, die bei der Verbindungsherstellung mit www.microsoft.com von verschiedenen simulierten Kombinationen aus Clientbetriebssystem und Browser angefordert werden, finden Sie am Ende dieses Dokuments im Anhang A.See Appendix A at the end of this document for a detailed example showing the TLS protocol versions negotiated by various simulated client OS/browser combinations when connecting to www.microsoft.com.

Es wird dringend empfohlen, eine Inventur der Betriebssysteme durchzuführen, die von Ihrem Unternehmen, von Ihren Kunden und von Ihren Partnern verwendet werden. (Bei den Kunden/Partnern kann hierzu eine entsprechende Anfrage/Kommunikation oder zumindest eine HTTP-Benutzer-Agent-Zeichenfolgensammlung verwendet werden.)If not already complete, it is highly recommended to conduct an inventory of operating systems used by your enterprise, customers and partners (the latter two via outreach/communication or at least HTTP User-Agent string collection). Diese Inventur kann durch eine Datenverkehrsanalyse am Edge Ihres Unternehmensnetzwerks ergänzt werden.This inventory can be further supplemented by traffic analysis at your enterprise network edge. In einem solchen Fall liefert die Datenverkehrsanalyse die TLS-Versionen, die bei der Verbindungsherstellung mit Ihren Diensten erfolgreich von Kunden/Partnern ausgehandelt wurden, der Datenverkehr selbst bleibt jedoch verschlüsselt.In such a situation, traffic analysis will yield the TLS versions successfully negotiated by customers/partners connecting to your services, but the traffic itself will remain encrypted.

Entwicklungsverbesserungen von Microsoft für die Beseitigung von TLS 1.0-AbhängigkeitenMicrosoft's Engineering Improvements to eliminate TLS 1.0 dependencies

Seit der ersten Version dieses Dokuments hat Microsoft eine Reihe von Softwareupdates und neuen Features zur Unterstützung der Einstellung von TLS 1.0 bereitgestellt.Since the v1 release of this document, Microsoft has shipped a number of software updates and new features in support of TLS 1.0 deprecation. Dazu gehören:These include:

  • Benutzerdefinierte IIS-Protokollierung zur Korrelierung von Client-IP-Adresse/Benutzer-Agent-Zeichenfolge, Dienst-URI, TLS-Protokollversion und Verschlüsselungssammlung.IIS custom logging to correlate client IP/user agent string, service URI, TLS protocol version and cipher suite.

    • Mit dieser Protokollierung können Administratoren nun quantifizieren, wie stark ihre Kunden unsicherer TLS ausgesetzt sind.With this logging, admins can finally quantify their customers' exposure to weak TLS.
  • SecureScore: Um Office 365-Mandantenadministratoren bei der Identifizierung der eigenen unsicheren TLS-Nutzung zu unterstützen, wurde das SecureScore-Portal zur Bereitstellung dieser Informationen eingerichtet, nachdem die Unterstützung von TLS 1.0 in Office 365 im Oktober 2018 eingestellt wurde.SecureScore - To help Office 365 tenant admins identify their own weak TLS usage, the SecureScore portal has been built to share this information as TLS 1.0 exited support in Office 365 in October 2018.

    • In diesem Portal erhalten Office 365-Mandantenadministratoren wichtige Informationen, um ihre eigenen Kunden zu informieren, die sich ihrer TLS 1.0-Abhängigkeiten möglicherweise nicht bewusst sind.This portal provides Office 365 tenant admins with the valuable information they need to reach out to their own customers who may be unaware of their own TLS 1.0 dependencies.

    • Weitere Informationen erhalten Sie unter https://securescore.microsoft.com/.Please visit https://securescore.microsoft.com/ for more information.

  • .NET Framework-Updates, um Hartcodierungen auf der App-Ebene zu beseitigen und vom Framework geerbte TLS 1.0-Abhängigkeiten zu verhindern..Net Framework updates to eliminate app-level hardcoding and prevent framework-inherited TLS 1.0 dependencies.

  • Entwicklerleitfäden und Softwareupdates wurden veröffentlicht, um Kunden bei der Identifizierung und Beseitigung von .NET-Abhängigkeiten von unsicherer TLS zu unterstützen: Bewährte Methoden für Transport Layer Security (TLS) mit .NET FrameworkDeveloper Guidance and software updates have been released to help customers identify and eliminate .Net dependencies on weak TLS: Transport Layer Security (TLS) best practices with the .NET Framework

    • Hinweis: Für .NET 4.5 oder ältere Versionen konzipierte Apps müssen wahrscheinlich geändert werden, um TLS 1.2 zu unterstützen.FYI: All apps targeting .NET 4.5 or below are likely going to have to be modified in order to support TLS 1.2.
  • TLS 1.2 wurde für Windows Server 2008 SP2 und XP POSReady 2009 zurückportiert, um Kunden mit Legacyverpflichtungen zu unterstützen.TLS 1.2 has been backported to Windows Server 2008 SP2 and XP POSReady 2009 to help customers with legacy obligations.

  • Weitere Ankündigungen folgen Anfang 2019 und werden in späteren Aktualisierungen dieses Dokuments kommuniziert.More announcements will be made in early 2019 and communicated in subsequent updates of this document.

Ermitteln und Behandeln von TLS 1.0-Abhängigkeiten im CodeFinding and fixing TLS 1.0 dependencies in code

Bei Produkten, die die vom Windows-Betriebssystem bereitgestellten Kryptografiebibliotheken und Sicherheitsprotokolle verwenden, können Hartcodierungen von TLS 1.0 in Ihren Anwendungen wie folgt ermittelt werden:For products using the Windows OS-provided cryptography libraries and security protocols, the following steps should help identify any hardcoded TLS 1.0 usage in your applications:

  1. Ermitteln Sie alle Instanzen von „AcquireCredentialsHandle()“.Identify all instances of AcquireCredentialsHandle(). Dadurch können sich Prüfer den Codeblöcken annähern, in denen die TLS möglicherweise hartcodiert wurde.This helps reviewers get closer proximity to code blocks where TLS may be hardcoded.

  2. Überprüfen Sie alle Instanzen der Strukturen SecPkgContext_SupportedProtocols und SecPkgContext_ConnectionInfo auf hartcodierte TLS.Review any instances of the SecPkgContext_SupportedProtocols and SecPkgContext_ConnectionInfo structures for hardcoded TLS.

  3. Legen Sie in nativem Code alle Zuweisungen von grbitEnabledProtocols, die nicht Null sind, auf Null fest.In native code, set any non-zero assignments of grbitEnabledProtocols to zero. Dadurch kann vom Betriebssystem die jeweilige TLS-Standardversion verwendet werden.This allows the operating system to use its default TLS version.

  4. Deaktivieren Sie den FIPS-Modus (sofern aktiviert), um mögliche Konflikte mit Einstellungen aus diesem Dokument zu vermeiden, die zur expliziten Deaktivierung von TLS 1.0/1.1 erforderlich sind.Disable FIPS Mode if it is enabled due to the potential for conflict with settings required for explicitly disabling TLS 1.0/1.1 in this document. Weitere Informationen finden Sie im Anhang B.See Appendix B for more information.

  5. Aktualisieren Sie alle Anwendungen, die WinHTTP (gehostet unter Server 2012 oder einer älteren Version) verwenden, und kompilieren Sie sie erneut.Update and recompile any applications using WinHTTP hosted on Server 2012 or older.

    1. Erstellen Sie verwaltete Apps neu, und richten Sie sie auf die aktuellen .NET Framework-Version aus.Managed apps – rebuild and retarget against the latest .NET Framework version

    2. Anwendungen muss Code zur Unterstützung von TLS 1.2 per WinHttpSetOption hinzugefügt werden.Applications must add code to support TLS 1.2 via WinHttpSetOption

  6. Überprüfen Sie den Quellcode sowie Online-Dienstkonfigurationsdateien auf die folgenden Muster, um nichts zu übersehen. Hierbei handelt es sich um Aufzählungstypwerte, die in der Regel beim Hartcodieren der TLS verwendet werden:To cover all the bases, scan source code and online service configuration files for the patterns below corresponding to enumerated type values commonly used in TLS hardcoding:

    1. SecurityProtocolTypeSecurityProtocolType

    2. SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11

    3. WINHTTP_FLAG_SECURE_PROTOCOL_WINHTTP_FLAG_SECURE_PROTOCOL_

    4. SP_PROT_SP_PROT_

    5. NSStreamSocketSecurityLevelNSStreamSocketSecurityLevel

    6. „PROTOCOL_SSL“ oder „PROTOCOL_TLS“PROTOCOL_SSL or PROTOCOL_TLS

In den oben angegebenen Fällen empfiehlt es sich jeweils, die hartcodierte Protokollversion zu entfernen und die Standardeinstellung des Betriebssystems zu verwenden.The recommended solution in all cases above is to remove the hardcoded protocol version selection and defer to the operating system default. Falls Sie DevSkim verwenden, klicken Sie hier, um Regeln für die obigen Überprüfungen anzuzeigen, die Sie mit Ihrem eigenen Code verwenden können.If you are using DevSkim, click here to see rules covering the above checks which you can use with your own code.

Von Windows PowerShell wird .NET Framework 4.5 verwendet, TLS 1.2 ist in .NET Framework 4.5 aber nicht als verfügbares Protokoll enthalten.Windows PowerShell uses .NET Framework 4.5, which does not include TLS 1.2 as an available protocol. Dieses Problem lässt sich auf zwei Arten umgehen:To work around this, two solutions are available:

1.  <span data-ttu-id="4fa30-235">Fügen Sie dem betreffenden Skript Folgendes hinzu:         </span><span class="sxs-lookup"><span data-stu-id="4fa30-235">Modify the script in question to include the following:         </span></span>[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;

2.  <span data-ttu-id="4fa30-236">Fügen Sie jedem Computer, auf dem TLS 1.2-Verbindungen über eine .NET-App hergestellt werden müssen, einen systemweiten Registrierungsschlüssel hinzu (beispielsweise per Gruppenrichtlinie).</span><span class="sxs-lookup"><span data-stu-id="4fa30-236">Add a system-wide registry key (e.g. via group policy) to any machine that needs to make TLS 1.2 connections from a .NET app.</span></span> <span data-ttu-id="4fa30-237">Dies führt dazu, dass von .NET die TLS-Standardversionen des Systems verwendet werden und dass TLS 1.2 als verfügbares Protokoll hinzufügt wird. Außerdem können von den Skripts zukünftige TLS-Versionen verwendet werden, wenn diese vom Betriebssystem unterstützt werden.</span><span class="sxs-lookup"><span data-stu-id="4fa30-237">This will cause .NET to use the "System Default" TLS versions which adds TLS 1.2 as an available protocol AND it will allow the scripts to use future TLS Versions when the OS supports them.</span></span> <span data-ttu-id="4fa30-238">(beispielsweise TLS 1.3).</span><span class="sxs-lookup"><span data-stu-id="4fa30-238">(e.g. TLS 1.3)</span></span>  

    <span data-ttu-id="4fa30-239">reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64</span><span class="sxs-lookup"><span data-stu-id="4fa30-239">reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64</span></span>

    <span data-ttu-id="4fa30-240">reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32</span><span class="sxs-lookup"><span data-stu-id="4fa30-240">reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32</span></span>

Die beiden Lösungen schließen sich gegenseitig aus. Sie müssen also nicht gemeinsam implementiert werden.Solutions (1) and (2) are mutually-exclusive, meaning they need not be implemented together.

Erneutes Erstellen/Ändern der Ausrichtung verwalteter Anwendungen unter Verwendung der aktuellen .NET Framework-VersionRebuild/retarget managed applications using the latest .Net Framework version

Anwendungen, von denen .NET Framework-Versionen vor 4.7 verwendet werden, unterliegen möglicherweise Einschränkungen, die dazu führen, dass unabhängig von den zugrunde liegenden Standardwerten des Betriebssystems maximal TLS 1.0 unterstützt werden kann.Applications using .NET framework versions prior to 4.7 may have limitations effectively capping support to TLS 1.0 regardless of the underlying OS defaults. Weitere Informationen finden Sie im folgenden Diagramm sowie unter https://docs.microsoft.com/dotnet/framework/network-programming/tls.Refer to the below diagram and https://docs.microsoft.com/dotnet/framework/network-programming/tls for more information.

DOTNETTLS.png

„SystemDefaultTLSVersion“ hat Vorrang vor der TLS-Versionsausrichtung auf der App-Ebene.SystemDefaultTLSVersion takes precedence over app-level targeting of TLS versions. Es empfiehlt sich, immer die TLS-Standardversion des Betriebssystems zu verwenden.The recommended best practice is to always defer to the OS default TLS version. Hierbei handelt es sich auch um die einzige kryptografisch flexible Lösung, bei der Ihre Apps von einer zukünftigen TLS 1.3-Unterstützung profitieren können.It is also the only crypto-agile solution that lets your apps take advantage of future TLS 1.3 support.

Wenn Ihre Anwendung auf ältere Versionen von .NET Framework wie 4.5.2 oder 3.5 ausgelegt ist, dann verwendet sie standardmäßig die älteren und nicht empfohlenen Protokolle wie SSL 3.0 oder TLS 1.0.If you are targeting older versions of .NET Framework such as 4.5.2 or 3.5, then by default your application will use the older and not recommended protocols such as SSL 3.0 or TLS 1.0. Es wird dringend empfohlen, auf neuere Versionen von .NET Framework wie .NET Framework 4.6 zu aktualisieren oder die entsprechenden Registrierungsschlüssel auf „UseStrongCrypto“ festzulegen.It is strongly recommended that you upgrade to newer versions of .NET Framework such as .NET Framework 4.6 or set the appropriate registry keys for 'UseStrongCrypto'.

Testen mit TLS 1.2 und höheren VersionenTesting with TLS 1.2+

Im Anschluss an die empfohlenen Maßnahmen aus dem obigen Abschnitt müssen Regressionstests für die Produkte durchgeführt werden, um sie auf mögliche Protokollaushandlungsfehler zu überprüfen und die Kompatibilität mit anderen Betriebssystemen in Ihrem Unternehmen zu testen.Following the fixes recommended in the section above, products should be regression-tested for protocol negotiation errors and compatibility with other operating systems in your enterprise.

  • Das häufigste Problem bei diesen Regressionstests ist ein TLS-Aushandlungsfehler aufgrund eines Clientverbindungsversuchs von einem Betriebssystem oder Browser ohne TLS 1.2-Unterstützung.The most common issue in this regression testing will be a TLS negotiation failure due to a client connection attempt from an operating system or browser that does not support TLS 1.2.

    • So kann beispielsweise von einem Vista-Client keine TLS mit einem Server ausgehandelt werden, der für TLS 1.2 oder eine höhere Version konfiguriert ist, da von Vista maximal die TLS-Version 1.0 unterstützt wird.For example, a Vista client will fail to negotiate TLS with a server configured for TLS 1.2+ as Vista's maximum supported TLS version is 1.0. Dieser Client muss in einer Umgebung mit TLS 1.2 oder einer höheren Version entweder aktualisiert oder außer Betrieb gesetzt werden.That client should be either upgraded or decommissioned in a TLS 1.2+ environment.
  • Für Produkte mit zertifikatbasierter gegenseitiger TLS-Authentifizierung sind ggf. zusätzliche Regressionstests erforderlich, da der mit TLS 1.0 verknüpfte Zertifikatauswahlcode weniger ausdrucksstark war als der Code für TLS 1.2.Products using certificate-based Mutual TLS authentication may require additional regression testing as the certificate-selection code associated with TLS 1.0 was less expressive than that for TLS 1.2.

    • Wenn ein Produkt MTLS mit einem Zertifikat von einem nicht standardmäßigen Speicherort (außerhalb der standardmäßigen benannten Zertifikatspeicher in Windows) aushandelt, muss dieser Code ggf. aktualisiert werden, um sicherzustellen, dass das Zertifikat ordnungsgemäß abgerufen wird.If a product negotiates MTLS with a certificate from a non-standard location (outside of the standard named certificate stores in Windows), then that code may need updating to ensure the certificate is acquired correctly.
  • Gegenseitige Dienstabhängigkeiten müssen auf potenzielle Probleme überprüft werden.Service interdependencies should be reviewed for trouble spots.

    • Für Dienste, die mit Drittanbieterdiensten zusammenarbeiten, muss zusätzlich die Zusammenarbeit mit diesen Drittanbietern getestet werden.Any services which interoperate with 3rd-party services should conduct additional interop testing with those 3rd parties.

    • Für alle Windows-fremden Anwendungen und Serverbetriebssysteme muss die Unterstützung von TLS 1.2 untersucht/bestätigt werden.Any non-Windows applications or server operating systems in use require investigation / confirmation that they can support TLS 1.2. Dies lässt sich am einfachsten durch einen Scan ermitteln.Scanning is the easiest way to determine this.

Eine einfache Blaupause zum Testen dieser Änderungen in einem Onlinedienst umfasst Folgendes:A simple blueprint for testing these changes in an online service consists of the following:

  1. Überprüfen der Systeme der Produktionsumgebung, um Betriebssysteme ohne TLS 1.2-Unterstützung zu ermittelnConduct a scan of production environment systems to identify operating systems which do not support TLS 1.2.

  2. Überprüfen des Quellcodes und der Online-Dienstkonfigurationsdateien auf hartcodierte TLS, wie unter Ermitteln und Behandeln von TLS 1.0-Abhängigkeiten im Code beschriebenScan source code and online service configuration files for hardcoded TLS as described in "Finding and fixing TLS 1.0 dependencies in code"

  3. Aktualisieren/Neukompilieren von Anwendungen nach Bedarf:Update/recompile applications as required:

    1. Verwaltete AppsManaged apps

      1. Neuerstellen für die aktuelle .NET Framework-VersionRebuild against the latest .NET Framework version.

      2. Vergewissern, dass Vorkommen der Enumeration SSLProtocols auf „SSLProtocols.None“ festgelegt sind, um die Standardeinstellungen des Betriebssystems zu verwendenVerify any usage of the SSLProtocols enumeration is set to SSLProtocols.None in order to use OS default settings.

    2. Neuerstellen von WinHTTP-Apps mit WinHttpSetOption, um TLS 1.2 zu unterstützenWinHTTP apps – rebuild with WinHttpSetOption to support TLS 1.2

  4. Starten der Tests in einer Präproduktions- oder Stagingumgebung, in der alle Sicherheitsprotokolle vor TLS 1.2 per Registrierung deaktiviert wurdenStart testing in a pre-production or staging environment with all security protocols older than TLS 1.2 disabled via registry.

  5. Behandeln der restlichen TLS-Hartcodierungen, die beim Testen gefunden werdenFix any remaining instances of TLS hardcoding as they are encountered in testing. Erneutes Bereitstellen der Software und Durchführen eines neuen RegressionstestlaufsRedeploy the software and perform a new regression test run.

Informieren von Partnern über Ihre Einstellungspläne für TLS 1.0Notifying partners of your TLS 1.0 deprecation plans

Wenn Sie sich nach der Behandlung der TLS-Hartcodierungen und der Durchführung der Betriebssystem-/Entwicklungsframeworkupdates für die Einstellung von TLS 1.0 entscheiden, müssen Sie sich mit Kunden und Partnern abstimmen:After TLS hardcoding is addressed and operating system/development framework updates are completed, should you opt to deprecate TLS 1.0 it will be necessary to coordinate with customers and partners:

  • Eine frühzeitige Kontaktaufnahme mit Partnern/Kunden ist für den Erfolg der Einstellung von TLS 1.0 von entscheidender Bedeutung.Early partner/customer outreach is essential to a successful TLS 1.0 deprecation rollout. Diese muss mindestens Blogbeiträge, Whitepaper oder andere Webinhalte umfassen.At a minimum this should consist of blog postings, whitepapers or other web content.

  • Partner müssen mithilfe der Initiativen für Betriebssystem/Codeüberprüfung/Regressionstests aus den obigen Abschnitten jeweils ihre eigene Bereitschaft für TLS 1.2 untersuchen.Partners each need to evaluate their own TLS 1.2 readiness through the operating system/code scanning/regression testing initiatives described in above sections.

ZusammenfassungConclusion

Die umfassende Entfernung von TLS 1.0-Abhängigkeiten ist ein kompliziertes Unterfangen.Removing TLS 1.0 dependencies is a complicated issue to drive end to end. Microsoft und Branchenpartner werden schon heute aktiv, um die standardmäßige Sicherheit unseres gesamten Produktstapels zu gewährleisten – von den Betriebssystemkomponenten und Entwicklungsframeworks bis hin zu den darauf basierenden Anwendungen und Diensten.Microsoft and industry partners are taking action on this today to ensure our entire product stack is more secure by default, from our OS components and development frameworks up to the applications/services built on top of them. Durch die Umsetzung der Empfehlungen in diesem Dokument können Sie sicherstellen, dass Ihr Unternehmen den richtigen Kurs einschlägt und auf die zu erwartenden Herausforderungen vorbereitet ist.Following the recommendations made in this document will help your enterprise chart the right course and know what challenges to expect. Außerdem können Sie so Ihren Kunden bei der Vorbereitung auf die Umstellung helfen.It will also help your own customers become more prepared for the transition.

Anhang A: Handshake-Simulation für verschiedene Clients, die eine Verbindung mit www.microsoft.com herstellen (mit freundlicher Genehmigung von SSLLabs.com)Appendix A: Handshake Simulation for various clients connecting to www.microsoft.com, courtesy SSLLabs.com

Ergebnisse der Handshake-Simulation

Anhang B: Einstellen von TLS 1.0/1.1 unter Beibehaltung des FIPS-ModusAppendix B: Deprecating TLS 1.0/1.1 while retaining FIPS Mode

Führen Sie die folgenden Schritte aus, wenn Sie TLS 1.0/1.1 einstellen möchten und Ihr Netzwerk den FIPS-Modus benötigt:Follow the steps below if your network requires FIPS Mode but you also want to deprecate TLS 1.0/1.1:

  1. Konfigurieren Sie TLS-Versionen per Registrierung, indem Sie „Aktiviert“ für die unerwünschten TLS-Versionen auf „0“ festlegen.Configure TLS versions via the registry, by setting "Enabled" to zero for the unwanted TLS versions.

  2. Deaktivieren Sie Curve 25519 (nur Server 2016) per Gruppenrichtlinie.Disable Curve 25519 (Server 2016 only) via Group Policy.

  3. Deaktivieren Sie alle Verschlüsselungssammlungen, die Algorithmen verwenden, die für die entsprechende FIPS-Veröffentlichung nicht zulässig sind.Disable any cipher suites using algorithms that aren't allowed by the relevant FIPS publication. Für Server 2016 müssen bei Verwendung der Standardeinstellungen die Verschlüsselungen RC4, PSK und NULL deaktiviert werden.For Server 2016 (assuming the default settings are in effect) this is means disabling RC4, PSK and NULL ciphers.

Mitwirkende/DanksagungenContributors/Thanks to

Mark CartwrightMark Cartwright
Bryan SullivanBryan Sullivan
Patrick JunglesPatrick Jungles
Michael ScovettaMichael Scovetta
Tony RiceTony Rice
David LeBlancDavid LeBlanc
Mortimer CookMortimer Cook
Daniel SommerfeldDaniel Sommerfeld
Andrei PopovAndrei Popov
Michiko ShortMichiko Short
Justin BurkeJustin Burke
Gov MaharajGov Maharaj
Brad TurnerBrad Turner
Sean StevensonSean Stevenson