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

是否要将 .NET 应用程序部署到Amazon通过几个简单点击即可? 尝试我们的新.NET CLI 工具为了简化部署体验!阅读我们的博客帖子然后提交反馈GitHub

有关更多信息,请参阅部署工具

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

在此中强制执行 TLS 1.2Amazon产品或服务

为了提高与通信时的安全性Amazon服务,你应该配置这个Amazon使用 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 所述。如果您正在运行较早的发行版,则必须升级操作系统。

macOS

如果您正在运行 .NET Core 2.1 或更高版本,则默认情况下启用 TLS 1.2。支持 TLS 1.2OS X 小牛 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(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),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

如果您的应用程序正在 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

Amazon Tools for PowerShell

Amazon Tools for PowerShell 使用Amazon SDK for .NET来实施所有对 Amazon 服务的调用。您的环境的行为取决于您正在运行的 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 时,请按照之前提供的有关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 实施设置为Android而 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 (项目设置)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 支持由浏览器支持确定。

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 进行通信。

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