的版本 4 (V4) AWS SDK for .NET 已经发布!
有关重大更改和迁移应用程序的信息,请参阅迁移主题。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中强制使用最低 TLS 版本 AWS SDK for .NET
为了提高与 AWS 服务通信时的安全性,应将配置 AWS SDK for .NET 为使用 TLS 1.2 或更高版本。
AWS SDK for .NET 使用底层的.NET 运行时来确定要使用哪种安全协议。默认情况下,当前版本的 .NET 使用操作系统支持的最新的已配置协议。您的应用程序可以覆盖此开发工具包行为,但不建议 这样做。
TLS 1.3 是启用后量子加密的先决条件,这可能需要额外的操作或配置。要了解更多信息,请参阅《AWS 软件开发工具包和工具参考指南》中的启用混合后量子 TLS。
.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.7.2。有关更多信息,请参阅博客文章 Important changes coming for .NET Framework 3.5 and 4.5 targets of the AWS SDK for .NET
如果你的应用程序在 Windows 7 SP1 或 Windows Server 2008 R2 SP1 的较新的.NET 框架上运行,则需要确保注册表中启用 TLS 1.2 支持,如 #tls -12 中所述。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.7.2。有关更多信息,请参阅博客文章 Important changes coming for .NET Framework 3.5 and 4.5 targets of the 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
按照之前提供的有关.NET Core AWS SDK for .NET 及相关版本的说明进行操作。
Xamarin
对于 Xamarin,请参阅中的说明。https://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/transport-layer-security
对于 Android
-
需要 Android 5.0 或更高版本。
-
项目属性,Android 选项: HttpClient 实现必须设置为 Android, SSL/TLS 实现必须设置为 Native TLS 1.2+。
对于 iOS
-
需要 iOS 7 或更高版本。
-
必须将 “项目属性”、“iOS Build: HttpClient 实现” 设置为NSUrlSession。
对于 macOS
-
需要 macOS 10.9 或更高版本。
-
必须将 “项目选项”、“构建”、“Mac Build: HttpClient 实现” 设置为NSUrlSession。
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 的预览版中 WebAssembly,只有支持的浏览器才支持 Blazor WebAssembly,如中所述。https://learn.microsoft.com/en-us/aspnet/core/blazor/supported-platforms
有关更多信息和验证,请参阅浏览器的文档。