通过 tls 1.2 调用 Aws C# 开发工具包时出错

本文关键字:开发工具 开发 工具包 出错 Aws tls 调用 通过 | 更新日期: 2023-09-27 18:32:37

PayPal 在联系他们的 API 时很快就会强制使用 TLS 1.2。 此行为已在他们的沙盒上强制执行。

我们刚刚被一个副作用所困,即在调用 API 后PayPal对 AWS 开发工具包的任何后续调用都会失败。

有人遇到同样的问题并找到了解决方法?

通过 tls 1.2 调用 Aws C# 开发工具包时出错

正如 AWS

开发人员论坛上的此讨论所指出的,在发布本文时,AWS 开发工具包不支持 TLS 1.2。因此,在他们也实现对 TLS 1.2 的支持之前,您将无法在应用程序中专门迁移到 TLS 1.2。

存在一种解决方法,可以手动设置应用程序的通信协议。 在下面的示例中,更新了 ServicePointManager.SecurityProtocol 以启用对应用程序中 TLS 1.0、TLS 1.1 和/或 TLS 1.2 的支持:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

此更改应允许您使用 TLS 1.2 与PayPal通信,同时根据需要回退到旧版本以与 AWS 开发工具包进行通信。

笔记:

  • 手动设置此设置会给您带来负担,您需要定期查看此内容,并最终删除对旧 TLS 版本的支持,因为它们变得不必要和/或存在安全风险。 这就是符合PCI标准的API迁移到TLS 1.2的动机。密切关注适用于 .NET 的 AWS 开发工具包的更新,以便能够尽快放弃较旧的 TLS 支持。
  • Tls11Tls12 仅在 .NET 版本 4.5+ 的 SecurityProtocolType 枚举中可用。

延伸阅读:

  • MSDN - ServicePointManager.SecurityProtocol Property

  • Amazon S3 – 有关禁用 SSLv3 的常见问题 - 包括有关 TLS 及其在 AWS 开发工具包中的用法的有用讨论。

  • 如何禁用 SSL 回退并仅对 .NET 中的出站连接使用 TLS?(贵宾犬缓解( - 一个很好的相关问题/答案,评论了与TLS 1.0相关的安全风险以及迁移到TLS 1.2的动机。