适用于 .NET 的 Amazon SDK 版本 4(V4)已经发布!
要开始使用新版本的 SDK,请参阅 适用于 .NET 的 Amazon SDK(V4)开发人员指南,尤其是关于迁移到版本 4 的主题。
强制在适用于 .NET 的 Amazon SDK中实施最低 TLS 版本
要提高与 Amazon 服务通信时的安全性,您应将适用于 .NET 的 Amazon SDK配置为使用 TLS 1.2 或更高版本。
适用于 .NET 的 Amazon SDK 使用底层 .NET 运行时来确定要使用哪个安全协议。默认情况下,当前版本的 .NET 使用操作系统支持的最新的已配置协议。您的应用程序可以覆盖此开发工具包行为,但不建议 这样做。
.NET 内核
默认情况下,.NET Core 使用操作系统支持的最新的已配置协议。适用于 .NET 的 Amazon SDK 不提供覆盖它的机制。
如果您使用的 .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),适用于 .NET 的 Amazon SDK 将尝试向支持的协议添加对 TLS 1.1 和 TLS 1.2 的支持
警告
自 2024 年 8 月 15 日起,适用于 .NET 的 Amazon SDK 将终止对 .NET Framework 3.5 的支持,并将支持的 .NET Framework 最低版本更改为 4.7.2。有关更多信息,请参阅博客文章 Important changes coming for .NET Framework 3.5 and 4.5 targets of the 适用于 .NET 的 Amazon SDK
如果您的应用程序正在 Windows 7 SP1 或 Windows Server 2008 R2 SP1 上较新的 .NET Framework 上运行,则需要确保在注册表中启用 TLS 1.2 支持,如 https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12
有关将 TLS 与 .NET Framework 结合使用的详细最佳实践,请参阅 Microsoft 文章:https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls
Amazon Tools for PowerShell
Amazon Tools for PowerShell 使用适用于 .NET 的 Amazon SDK来实施所有对 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 时,请按照之前提供的有关适用于 .NET 的 Amazon SDK和 .NET Framework 3.5 的说明进行操作。
警告
自 2024 年 8 月 15 日起,适用于 .NET 的 Amazon SDK 将终止对 .NET Framework 3.5 的支持,并将支持的 .NET Framework 最低版本更改为 4.7.2。有关更多信息,请参阅博客文章 Important changes coming for .NET Framework 3.5 and 4.5 targets of the 适用于 .NET 的 Amazon SDK
。 -
使用 .NET Runtime 4.0 时,请按照之前提供的有关适用于 .NET 的 Amazon SDK和 .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 的 Amazon SDK和相关 .NET Core 版本的说明进行操作。
Xamarin
对于 Xamarin,请参阅说明::https://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/transport-layer-security
对于 Android:
-
需要 Android 5.0 或更高版本。
-
Project Properties (项目属性),Android 选项:HttpClient 实现必须设置为 Android,且 SSL/TLS 实现设置为 Native TLS 1.2+ (本机 TLS 1.2+)。
对于 iOS
-
需要 iOS 7 或更高版本。
-
Project Properties (项目属性),iOS Build (iOS 生成包):HttpClient 实现必须设置为 NSUrlSession。
对于 macOS
-
需要 macOS 10.9 或更高版本。
-
Project Options (项目选项)、Build (生成包)、Mac Build (Mac 生成包):HttpClient 实现必须设置为 NSUrlSession。
Unity
您必须使用 Unity 2018.2 或更高版本,并使用 .NET 4.x 等效脚本运行时。您可以在 Project Settings (项目设置)、Configuration (配置)、Player (播放器) 中对此进行设置,如 https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html
浏览器(用于 Blazor WebAssembly)
WebAssembly 在浏览器中而不是在服务器上运行,并使用浏览器处理 HTTP 流量。因此,TLS 支持由浏览器支持确定。
在 ASP.NET Core 3.1 的预览版中,Blazor WebAssembly 只在支持 WebAssembly 的浏览器中受支持,如 https://learn.microsoft.com/en-us/aspnet/core/blazor/supported-platforms
有关更多信息和验证,请参阅浏览器的文档。