在适用于 Ruby 的 AWS SDK 中强制执行最低 TLS 版本 - 适用于 Ruby 的 AWS SDK

在适用于 Ruby 的 AWS SDK 中强制执行最低 TLS 版本

适用于 Ruby 的 AWS SDK 与 AWS 之间的通信使用安全套接字层 (SSL) 或传输层安全性协议 (TLS) 进行保护。所有版本的 SSL 以及 1.2 版之前的 TLS 版本存在漏洞,可能会影响您与 AWS 之间的通信安全性。因此,请务必将适用于 Ruby 的 AWS 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 版本结合使用时,适用于 Ruby 的 AWS SDK 将优先使用 TLS 1.2,并使用客户端和服务器都支持的最新版本 SSL 或 TLS。对于 AWS 服务来说,此版本始终为 TLS 1.2 或更高版本。(此 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