在 Ruby 的 S AWS DK 中强制使用最低 TLS 版本 - AWS 适用于 Ruby 的 SDK

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

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

AWS 适用于 Ruby AWS 的 SDK 与之间的通信使用安全套接字层 (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 支持版本一起使用时, AWS 适用于 Ruby 的 SDK 更喜欢 TLS 1.2,并使用客户端和服务器都支持的最新版本的 SSL 或 TLS。这始终至少是 TLS 1.2 AWS 服务。(此 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