在 this AWS Product or Service 中强制执行 TLS 1.2 - 适用于 .NET 的 AWS 开发工具包
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 this AWS Product or Service 中强制执行 TLS 1.2

要提高与 AWS 服务通信时的安全性,您应将 this AWS product or service 配置为使用 TLS 1.2 或更高版本。

适用于 .NET 的 AWS 开发工具包 使用底层 .NET 运行时来确定要使用哪个安全协议。默认情况下,当前版本的 .NET 使用操作系统支持的最新的已配置协议。您的应用程序可以覆盖此开发工具包行为,但不建议 这样做。

.NET 内核

默认情况下,.NET Core 使用操作系统支持的最新的已配置协议。适用于 .NET 的 AWS 开发工具包 不提供覆盖它的机制。

如果您使用的 .NET Core 版本低于 2.1,我们强烈 建议您升级 .NET Core 版本。

有关特定于每个操作系统的信息,请参阅以下内容。

(Windows)

Windows 的最新发行版默认情况下启用了 TLS 1.2 支持。如果您正在 Windows 7 SP1 或 Windows Server 2008 R2 SP1 上运行,则需要确保在注册表中启用 TLS 1.2 支持,如 https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12 所述。如果您正在运行较早的发行版,则必须升级操作系统。

macOS

如果您正在运行 .NET Core 2.1 或更高版本,则默认情况下启用 TLS 1.2。TLS1.2受 OSXMavericksv10.9或更高版本. .NETCore2.1版和更高版本需要较新版本的macOS,如 https://docs.microsoft.com/en-us/dotnet/core/install/dependencies?tabs=netcore21&pivots=os-macos.

如果您使用的是 .NET Core 1.0,则 .NET Core 在 macOS 上使用 OpenSSL,这是一个必须单独安装的依赖项。OpenSSL 在版本 1.0.1(2012 年 3 月 14 日)中增加了对 TLS 1.2 的支持。

(Linux)

Linux 上的 .NET Core 需要 OpenSSL,它与许多 Linux 发行版捆绑在一起。但也可以单独安装它。OpenSSL 在版本 1.0.1(2012 年 3 月 14 日)中增加了对 TLS 1.2 的支持。如果您使用的是 .NET Core 的最新版本(2.1 或更高版本),并且已安装了程序包管理器,则可能已经为您安装了更高版本的 OpenSSL。

当然,您可以在终端中运行 openssl version 并验证版本是否低于 1.0.1。

.NET Framework

如果您正在运行 .NET Framework 的最新版本(4.7 或更高版本)和 Windows 的最新版本(对于客户端,至少为 Windows 8;对于服务器,则为 Windows Server 2012 或更高版本),则默认情况下启用并使用 TLS 1.2。

如果您使用的是不使用操作系统设置的 .NET Framework 运行时(.NET Framework 3.5 到 4.5.2),适用于 .NET 的 AWS 开发工具包 将尝试向支持的协议添加对 TLS 1.1 和 TLS 1.2 的支持。如果您使用的是 .NET Framework 3.5,则只有在安装了适当的热补丁时才会成功,如下所示:

  • Windows 10 版本 1511 和 Windows Server 2016 – KB3156421

  • Windows 8.1 和 Windows Server 2012 R2 – KB3154520

  • Windows Server 2012 – KB3154519

  • Windows 7 SP1 和 Server 2008 R2 SP1– KB3154518

如果您的应用程序正在 Windows 7 SP1 或 Windows Server 2008 R2 SP1 上较新的 .NET Framework 上运行,则需要确保在注册表中启用 TLS 1.2 支持,如 https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12 所述。较新版本的 Windows 在默认情况下已启用它。

有关将 TLS 与 .NET Framework 结合使用的详细最佳实践,请参阅 Microsoft 文章:https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls

适用于 PowerShell 的 AWS 工具

适用于 PowerShell 的 AWS 工具 使用适用于 .NET 的 AWS 开发工具包来实施所有对 AWS 服务的调用。您的环境的行为取决于您正在运行的 Windows PowerShell 版本,如下所示。

Windows PowerShell 2.0 到 5.x

Windows PowerShell 2.0 到 5.x 在 .NET Framework 上运行。您可以使用以下命令验证 PowerShell 正在使用哪个 .NET 运行时(2.0 或 4.0)。

$PSVersionTable.CLRVersion
  • 使用 .NET Runtime 2.0 时,请按照之前提供的有关适用于 .NET 的 AWS 开发工具包和 .NET Framework 3.5 的说明进行操作。

  • 使用 .NET Runtime 4.0 时,请按照之前提供的有关适用于 .NET 的 AWS 开发工具包和 .NET Framework 4+ 的说明进行操作。

Windows PowerShell 6.0

Windows PowerShell 6.0 和更高版本在 .NET Core 上运行。您可以通过运行以下命令验证正在使用哪个版本的 .NET Core。

[System.Reflection.Assembly]::GetEntryAssembly().GetCustomAttributes([System.Runtime.Versioning.TargetFrameworkAttribute], $true).FrameworkName

按照之前提供的有关适用于 .NET 的 AWS 开发工具包和相关 .NET Core 版本的说明进行操作。

Xamarin

对于 Xamarin,请参阅说明::https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/transport-layer-security。总而言之:

对于 Android

  • 需要 Android 5.0 或更高版本。

  • 项目属性, Android选项: HttpClient实施必须设置为 安卓 SSL/TLS实施设置为 原生TLS1.2+.

对于 iOS

  • 需要 iOS 7 或更高版本。

  • 项目属性, iOS内部版本: HttpClient实施必须设置为 NSUrl会话.

对于 macOS

  • 需要 macOS 10.9 或更高版本。

  • 项目选项, 构建, Mac内部版本: HttpClient实施必须设置为 NSUrl会话.

Unity

您必须使用 Unity 2018.2 或更高版本,并使用 .NET 4.x 等效脚本运行时。您可以在 Project Settings (项目设置)Configuration (配置)Player (播放器) 中对此进行设置,如 https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html 所述。.NET 4.x 等效脚本运行时对运行 Mono 或 IL2CPP 的所有 Unity 平台启用 TLS 1.2 支持。有关更多信息,请参阅 https://blogs.unity3d.com/2018/07/11/scripting-runtime-improvements-in-unity-2018-2/

浏览器(用于 Blazor WebAssembly)

WebAssembly 在浏览器中而不是在服务器上运行,并使用浏览器处理 HTTP 流量。因此,TLS 支持由浏览器支持确定。

BlazorWebAssembly在预览ASP.NETCore3.1时,仅在支持WebAssembly的浏览器中受支持,详见 https://docs.microsoft.com/en-us/aspnet/core/blazor/supported-platforms. 所有主流浏览器都先支持 TLS 1.2,然后才支持 WebAssembly。如果您的浏览器是这种情况,那么如果您的应用程序运行,它可以通过 TLS 1.2 进行通信。

有关更多信息和验证,请参阅浏览器的文档。