强制执行最低 TLS 版本Amazon SDK for .NET - Amazon SDK for .NET
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

强制执行最低 TLS 版本Amazon SDK for .NET

提高与通信时的安全性Amazon服务,则应配置Amazon SDK for .NET使用 TLS 1.2 或更高版本。

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

.NET 内核

默认情况下,.NET Core 使用操作系统支持的最新的已配置协议。Amazon SDK for .NET 不提供覆盖它的机制。

如果您使用的 .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. 如果您正在运行较早的发行版,则必须升级操作系统。有关 Windows 中 TLS 1.3 支持的信息,请查看最新的 Microsoft 文档,了解所需的最低客户端或服务器版本。

macOS

如果您正在运行 .NET Core 2.1 或更高版本,则默认情况下启用 TLS 1.2。TLS 1.2 受支持OS X Mavericks v10.9 或更高版本. .NET Core 版本 2.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 中增加了对 TLS 1.2 的支持,并在版本 1.1.1 中增加了对 TLS 1.3 的支持。

Linux

Linux 上的 .NET Core 需要 OpenSSL,它与许多 Linux 发行版捆绑在一起。但也可以单独安装它。OpenSSL 在版本 1.0.1 中增加了对 TLS 1.2 的支持,并在版本 1.1.1 中增加了对 TLS 1.3 的支持。如果您使用的是 .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),Amazon SDK for .NET 将尝试向支持的协议添加对 TLS 1.1 和 TLS 1.2 的支持。如果您使用的是 .NET Framework 3.5,则只有在安装了适当的热补丁时才会成功,如下所示:

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

  • Windows 8.1 和 Windows Server 2012 —KB3154520

  • Windows Server 2012 —KB3154519

  • Windows 7 SP1 和 Server 2008 R2 SP1 —KB3154518

如果您的应用程序正在 Windows 7 SP1 或 Windows Server 2008 R2 SP1 上运行,则需要确保在注册表中启用 TLS 1.2 支持,如 Windows 7 SP1 或 Windows Server 2008 R2 SP1 上运行,如所述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

Amazon Tools for PowerShell

Amazon Tools for PowerShell 使用Amazon SDK for .NET来实施所有对 Amazon 服务的调用。您的环境的行为取决于 Windows 版本 PowerShell 你在跑步,如下所示。

Windows PowerShell 2.0 到 5.x

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

$PSVersionTable.CLRVersion
  • 使用 .NET Runtime 2.0 时,请按照之前提供的有关Amazon SDK for .NET和 .NET Framework 3.5 的说明进行操作。

  • 使用 .NET Runtime 4.0 时,请按照之前提供的有关Amazon SDK for .NET和 .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

按照之前提供的有关Amazon SDK for .NET和相关 .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 实现设置为本机 TLS 1.2+.

对于 iOS

  • 需要 iOS 7 或更高版本。

  • 项目属性iOS 构建: HttpClient必须将实现设置为NSUrlSession.

对于 macOS

  • 需要 macOS 10.9 或更高版本。

  • 项目选项构建Mac 版本: HttpClient 必须将实现设置为NSUrlSession.

Unity

您必须使用 Unity 2018.2 或更高版本,并使用 .NET 4.x 等效脚本运行时。您可以在Project Settings配置玩家,如上所述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 支持由浏览器支持确定。

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

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