在适用于 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 连接。通过系统程序包管理器yum、apt 等)、官方安装程序
当与使用 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 的安装指南./configure 时通过 --with-openssl-dir=/path/to/upgraded/openssl。