

 适用于 .NET 的 AWS SDK V3 已进入维护模式。

我们建议您迁移到 [适用于 .NET 的 AWS SDK V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)。有关如何迁移的更多详细信息和信息，请参阅我们的[维护模式公告](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

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

# 在中强制使用最低 TLS 版本 适用于 .NET 的 AWS SDK
<a name="enforcing-tls"></a>

为了提高与 AWS 服务通信时的安全性，应将配置 适用于 .NET 的 AWS SDK 为使用 TLS 1.2 或更高版本。

 适用于 .NET 的 AWS SDK 使用底层的.NET 运行时来确定要使用哪种安全协议。默认情况下，当前版本的 .NET 使用操作系统支持的最新的已配置协议。您的应用程序可以覆盖此开发工具包行为，但*不建议* 这样做。

## .NET 内核
<a name="enforcing-tls-dotnet-core"></a>

默认情况下，.NET Core 使用操作系统支持的最新的已配置协议。 适用于 .NET 的 AWS SDK 不提供覆盖它的机制。

如果您使用的 .NET Core 版本低于 2.1，我们*强烈* 建议您升级 .NET Core 版本。

有关特定于每个操作系统的信息，请参阅以下内容。

**Windows**

Windows 的最新发行版[默认情况下启用了](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-) TLS 1.2 支持。如果你在 Windows 7 SP1 或 Windows Server 2008 R2 上运行 SP1，则需要确保注册表中启用 TLS 1.2 支持，如 windows [server/security/tls/tls-注册表设置 https://learn.microsoft.com/en-us/ \$1tls-](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12) 12 中所述。如果您正在运行较早的发行版，则必须升级操作系统。有关 Windows 中 TLS 1.3 支持的信息，请查看最新的 Microsoft 文档，了解所需的最低客户端或服务器版本。

**macOS**

如果您正在运行 .NET Core 2.1 或更高版本，则默认情况下启用 TLS 1.2。[OS X Mavericks v10.9 或更高版本](https://support.apple.com/en-us/103373)支持 TLS 1.2。[.NET Core 版本 2.1 及更高版本需要较新版本的 macOS，详见？https://learn.microsoft.com/en-us/dotnet/core/install/windows tabs=net80&pivots=os-macos](https://learn.microsoft.com/en-us/dotnet/core/install/windows?tabs=net80&pivots=os-macos)。

如果您使用的是 .NET Core 1.0，则 .NET Core [在 macOS 上使用 OpenSSL](https://github.com/dotnet/announcements/issues/21)，这是一个必须单独安装的依赖项。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。
<a name="enforcing-tls-dotnet-framework"></a>

如果您正在运行 .NET Framework 的最新版本（4.7 或更高版本）和 Windows 的最新版本（对于客户端，至少为 Windows 8；对于服务器，则为 Windows Server 2012 或更高版本），则默认情况下启用并使用 TLS 1.2。

如果你使用的.NET Framework 运行时不使用操作系统设置（.NET Framework 3.5 到 4.5.2），则 适用于 .NET 的 AWS SDK 会尝试在支持的协议中[添加对 TLS 1.1 和 TLS 1.2 的支持](https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/Amazon.Runtime/Pipeline/HttpHandler/AmazonSecurityProtocolManager.cs)。如果您使用的是 .NET Framework 3.5，则只有在安装了适当的热补丁时才会成功，如下所示：
+ Windows 10 版本 1511 和 Windows Server 2016 — [KB3156421](https://support.microsoft.com/kb/3156421)
+ Windows 8.1 和 Windows Server 2012 R2 — [KB3154520](https://support.microsoft.com/kb/3154520)
+ Windows Server 2012 — [KB3154519](https://support.microsoft.com/kb/3154519)
+ Windows 7 SP1 和 Server 2008 R2 — SP1 [KB3154518](https://support.microsoft.com/kb/3154518)

**警告**  
从 2024 年 8 月 15 日起，他们 适用于 .NET 的 AWS 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 的 AWS SDK](https://aws.amazon.com/blogs/developer/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 的较新的.NET 框架上运行 SP1，则需要确保注册表中启用 TLS 1.2 支持，如 w [https://learn.microsoft.com/en-us/indows server/security/tls/tls-注册表设置 \$1tls-](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12) 12 中所述。较新版本的 Windows [在默认情况下已启用](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-)它。

有关在.NET 框架中使用 TLS 的详细最佳实践，请参阅微软的文章，网址为[https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls](https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls)。

## AWS Tools for PowerShell
<a name="enforcing-tls-ps"></a>

[AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)使用 适用于 .NET 的 AWS SDK 所有 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 时，请按照之前提供的有关 适用于 .NET 的 AWS SDK 和 .NET Framework 3.5 的说明进行操作。
**警告**  
从 2024 年 8 月 15 日起，他们 适用于 .NET 的 AWS 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 的 AWS SDK](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/)。
+ 使用 .NET Runtime 4.0 时，请按照之前提供的有关 适用于 .NET 的 AWS SDK 和 .NET Framework 4\$1 的说明进行操作。

**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 适用于 .NET 的 AWS SDK 及相关版本的说明进行操作。

## Xamarin
<a name="enforcing-tls-xamarin"></a>

[对于 Xamarin，请参阅-layer-security 中的说明。https://learn.microsoft.com/en-us/ xamarin/cross-platform/app-fundamentals/transport](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\$1**。

**对于 iOS**
+ 需要 iOS 7 或更高版本。
+ 必须将 “**项目属性**”、“**iOS 构建**： HttpClient实现” 设置为 “**NSUrl会话**”。

**对于 macOS**
+ 需要 macOS 10.9 或更高版本。
+ 必须将 **“项目选项”、“****构建**”、“**Mac Build**： HttpClient 实现” 设置为 “**NSUrl会话**”。

## Unity
<a name="enforcing-tls-unity"></a>

您必须使用 Unity 2018.2 或更高版本，并使用 .NET 4.x 等效脚本运行时。你可以在 **“项目设置”、“**配置**”、“**播放器**” 中进行设置**，如 [https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html](https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html) 中所述。.NET 4.x 等效脚本运行时为所有运行 Mono 或 IL2 CPP 的 Unity 平台启用 TLS 1.2 支持。

## 浏览器（适用于 Blazor WebAssembly）
<a name="enforcing-tls-browser"></a>

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

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

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