传输层安全性 (TLS) 1.2

使用最新版本的传输层安全性 (TLS) 对于确保应用程序网络通信安全非常重要。

警告

2018 年 4 月 – 由于安全要求的提高(包括 PCI 合规性),主要云服务提供商和 Web 服务器预计将停止支持低于 1.2 的 TLS 版本。 在早期版本的 Visual Studio 中创建的 Xamarin 项目默认使用旧版 TLS。

为了确保应用继续与这些服务器和服务配合使用,应将 Xamarin 项目更新为使用以下设置,然后重新生成应用并将其重新部署到用户。

项目必须引用 System.Net.Http 程序集,并按如下所示进行配置。

将 Xamarin.Android 更新为 TLS 1.2

更新“HttpClient 实现”和“SSL/TLS 实现”选项,以启用 TLS 1.2 安全性。

注意

需要 Android 5.0 或更高版本。

可以在“项目属性”>“Android 选项”中找到这些设置,然后单击“高级”按钮:

在 Visual Studio for Android 设备中配置 HttpClient 和 TLS。

将 Xamarin.iOS 更新为 TLS 1.2

更新“HttpClient 实现”选项以启用 TSL 1.2 安全性。

可以在“项目属性”>“iOS 生成”中找到此设置:

在 Visual Studio for iOS 设备中配置 HttpClient 和 TLS。

将 Xamarin.Mac 更新为 TLS 1.2

在 Visual Studio for Mac 中,若要在 Xamarin.Mac 应用中启用 TLS 1.2,请更新“项目选项”>“生成”>“Mac 生成”中的“HttpClient 实现”选项:

在 Visual Studio for Mac 中配置 HttpClient

警告

即将发布的 Xamarin.Mac 4.8 版本仅支持 macOS 10.9 或更高版本。 早期版本的 Xamarin.Mac 支持 macOS 10.7 或更高版本,但这些较旧的 macOS 版本缺少足够的 TLS 基础结构,无法支持 TLS 1.2。 若要面向 macOS 10.7 或 macOS 10.8,请使用 Xamarin.Mac 4.6 或更早版本。

替代配置选项

本部分讨论上述 TLS 1.2 支持的配置的替代配置选项。 应用程序开发人员只有在了解使用不同级别的 TLS 支持所面临的风险时才应考虑这些替代配置选项。

HttpClient 实现

Xamarin 开发人员始终能够在其代码中使用本机网络类,但是还有一个选项可以确定 HttpClient 类使用哪个网络堆栈。 这提供了熟悉的 .NET API,具有本机平台的速度和安全性优势。

选项包括:

  • 托管堆栈 – Mono 提供的网络功能,或
  • 本机堆栈 – 基础平台(Android、iOS 或 macOS)提供的各种网络 API。

托管堆栈提供与现有 .NET 代码的最高级别的兼容性,但速度可能较慢并会导致可执行文件较大。

本机选项运行速度会更快且具有更好的安全性(包括 TLS 1.2),但可能无法提供 HttpClient 类的所有功能和选项。

SSL/TLS 实现 (Android)

Android 项目选项还允许选择要支持的 SSL/TLS 实现:

  • Mono/托管 – Android 上的 TLS 1.1
  • 本机 – Android 上的 TLS 1.2。

新的 Xamarin 项目默认使用支持 TLS 1.2 的本机实现(建议所有项目使用),但如果出于兼容性原因的需要,可以切换回托管代码。

重要

从 iOS 和 Mac 项目选项中删除了“Mono/托管”选项。

iOS 和 Mac 平台上始终使用“本机”选项。

特定于平台的详细信息

上述摘要介绍了 Xamarin 项目中 HttpClient 和 SSL/TLS 实现的项目级设置。 也可以在代码中动态设置 HttpClient 实现。 有关详细信息,请参阅以下特定于平台的指南:

总结

应用程序应尽可能使用传输层安全性 (TLS) 1.2。 应根据本文中的说明更新现有应用程序中的设置,然后重新生成并重新部署到客户。