本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
强制在AWS SDK for .NET中实施最低 TLS 版本
要提高与 AWS 服务通信时的安全性,您应将AWS SDK for .NET配置为使用 TLS 1.2 或更高版本。
AWS SDK for .NET 使用底层 .NET 运行时来确定要使用哪个安全协议。默认情况下,当前版本的 .NET 使用操作系统支持的最新的已配置协议。您的应用程序可以覆盖此开发工具包行为,但不建议 这样做。
.NET 内核
默认情况下,.NET Core 使用操作系统支持的最新的已配置协议。AWS SDK for .NET 不提供覆盖它的机制。
如果您使用的 .NET Core 版本低于 2.1,我们强烈 建议您升级 .NET Core 版本。
有关特定于每个操作系统的信息,请参阅以下内容。
Windows
Windows 的最新发行版默认情况下启用了
macOS
如果您正在运行 .NET Core 2.1 或更高版本,则默认情况下启用 TLS 1.2。OS X Mavericks v10.9 或更高版本
如果您使用的是 .NET Core 1.0,则 .NET Core 在 macOS 上使用 OpenSSL
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),AWS SDK for .NET 将尝试向支持的协议添加对 TLS 1.1 和 TLS 1.2 的支持
警告
从 2024 年 8 月 15 日起,他们AWS SDK for .NET将终止对.NET Framework 3.5 的支持,并将.NET Framework 的最低版本更改为 4.6.2。有关更多信息,请参阅博客文章 .NET Framework 3.5 和 4.5 目标即将发生的重要变化AWS 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
有关在.NET 框架中使用 TLS 的详细最佳实践,请参阅微软的文章 https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls
AWS Tools for PowerShell
AWS Tools for PowerShell 使用AWS SDK for .NET来实施所有对 AWS 服务的调用。环境的行为取决于 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 时,请按照之前提供的有关AWS SDK for .NET和 .NET Framework 3.5 的说明进行操作。
警告
从 2024 年 8 月 15 日起,他们AWS SDK for .NET将终止对.NET Framework 3.5 的支持,并将.NET Framework 的最低版本更改为 4.6.2。有关更多信息,请参阅博客文章 .NET Framework 3.5 和 4.5 目标即将发生的重要变化AWS SDK for .NET
。 -
使用 .NET Runtime 4.0 时,请按照之前提供的有关AWS 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
按照之前提供的有关AWS SDK for .NET和相关 .NET Core 版本的说明进行操作。
Xamarin
对于 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
浏览器(适用于 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 中所述。
有关更多信息和验证,请参阅浏览器的文档。