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

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

强制在Amazon SDK for .NET中实施最低 TLS 版本

要提高与 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://learn.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。OS X Mavericks v10.9 或更高版本支持 TLS 1.2。.NET Core 2.1 及更高版本需要更新版本的 macOS,如 https://learn.microsoft.com/en-us/dotnet/core/install/windows?tabs=net80&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 R2 – KB3154520

  • Windows Server 2012 – KB3154519

  • Windows 7 SP1 和 Server 2008 R2 SP1 – KB3154518

警告

从 2024 年 8 月 15 日起,他们Amazon SDK for .NET将终止对.NET Framework 3.5 的支持,并将.NET Framework 的最低版本更改为 4.6.2。有关更多信息,请参阅博客文章 .NET Framework 3.5 和 4.5 目标即将发生的重要变化Amazon SDK for .NET

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

有关在.NET 框架中使用 TLS 的详细最佳实践,请参阅微软的文章 https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls

Amazon Tools for PowerShell

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

Windows PowerShell 2.0 到 5.x

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

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

    警告

    从 2024 年 8 月 15 日起,他们Amazon SDK for .NET将终止对.NET Framework 3.5 的支持,并将.NET Framework 的最低版本更改为 4.6.2。有关更多信息,请参阅博客文章 .NET Framework 3.5 和 4.5 目标即将发生的重要变化Amazon SDK for .NET

  • 使用 .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://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/ 上的说明。transport-layer-security总而言之:

对于 Android

  • 需要 Android 5.0 或更高版本。

  • 项目属性安卓选项: HttpClient 实现必须设置为安,SSL/TLS 实现必须设置为原生 TLS 1.2+。

对于 iOS

  • 需要 iOS 7 或更高版本。

  • 项目属性iOS Build: HttpClient 实现必须设置为 NS UrlSession

对于 macOS

  • 需要 macOS 10.9 或更高版本。

  • “项目选项”、“构建”、“Mac Build: HttpClient 实现” 必须设置为 NS UrlSession

Unity

您必须使用 Unity 2018.2 或更高版本,并使用 .NET 4.x 等效脚本运行时。你可以在 “项目设置”、“配置”、“播放器” 中进行设置,如 https://docs.unity3d.com/2019.1/Documentation/Manual/ ScriptingRuntimeUpgrade .html 中所述。.NET 4.x 等效脚本运行时对运行 Mono 或 IL2CPP 的所有 Unity 平台启用 TLS 1.2 支持。欲了解更多信息,请参阅 https://blog.unity.com/technology/ scripting-runtime-improvements-in-unity-2018-2

浏览器(适用于 Blazor WebAssembly)

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

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

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