在 Ruby 的 S Amazon DK 中强制使用最低 TLS 版本 - Amazon 适用于 Ruby 的 SDK
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Ruby 的 S Amazon DK 中强制使用最低 TLS 版本

Amazon 适用于 Ruby Amazon 的 SDK 与之间的通信使用安全套接字层 (SSL) 或传输层安全 (TLS) 进行保护。所有版本的 SSL 以及 1.2 之前的 TLS 版本都存在漏洞,可能会危及您与之通信的安全性 Amazon。因此,您应确保将适用于 Ruby 的 Amazon SDK 与支持 TLS 1.2 或更高版本的 Ruby 版本一起使用。

Ruby 使用 OpenSSL 库来保护 HTTP 连接。通过系统程序包管理器yumapt 等)、官方安装程序或 Ruby 管理器(rbenv、RVM 等)安装的受支持 Ruby 版本(1.9.3 及更高版本)通常使用 OpenSSL 1.0.1 或更高版本,这些版本支持 TLS 1.2。

当与 OpenSSL 1.0.1 或更高版本的 Ruby 支持版本一起使用时, Amazon 适用于 Ruby 的 SDK 更喜欢 TLS 1.2,并使用客户端和服务器都支持的最新版本的 SSL 或 TLS。这始终至少是 TLS 1.2 Amazon Web Services。(此 SDK 将使用 use_ssl=true 的 Ruby Net::HTTP 类。)

检查 OpenSSL 版本

要确保您安装的 Ruby 使用的是 OpenSSL 1.0.1 或更高版本,请输入以下命令。

ruby -r openssl -e 'puts OpenSSL::OPENSSL_VERSION'

获取 OpenSSL 版本的另一种方法是直接查询 openssl 可执行文件。首先,使用以下命令查找适当的可执行文件。

ruby -r rbconfig -e 'puts RbConfig::CONFIG["configure_args"]'

输出应包含指示 OpenSSL 安装位置的 --with-openssl-dir=/path/to/openssl。记下此路径。要检查 OpenSSL 的版本,请输入以下命令。

cd /path/to/openssl bin/openssl version

后一种方法可能不适用于所有 Ruby 安装。

升级 TLS 支持

如果您的 Ruby 安装使用的是 1.0.1 版之前的 OpenSSL 版本,请使用系统程序包管理器、Ruby 安装程序或 Ruby 管理器升级 Ruby 或 OpenSSL 安装,如 Ruby 的安装指南中所述。如果您要从源代码安装 Ruby,请先安装最新的 OpenSSL,然后在运行 ./configure 时通过 --with-openssl-dir=/path/to/upgraded/openssl