AWSSDK for RubyでTLS の最小バージョンを強制する - AWS SDK for Ruby

AWSSDK for RubyでTLS の最小バージョンを強制する

AWS SDK for Ruby と AWS 間の通信は、Secure Sockets Layer (SSL) または Transport Layer Security (TLS) を使用して保護されます。SSL のすべてのバージョン、および 1.2 より前の TLS バージョンには、AWS との通信のセキュリティを侵害する可能性のある脆弱性があります。このため、TLS バージョン 1.2 以降をサポートする Ruby のバージョンを持つ AWS SDK for Ruby を使用していることを確認する必要があります。

Ruby は OpenSSL ライブラリを使用して HTTP 接続を保護します。システムパッケージマネージャー (yumapt など)、公式インストーラ、Ruby マネージャー (rbenv、RVM など) でインストールされた、サポートされているバージョンの Ruby (1.9.3 以降) では、通常、TLS 1.2 をサポートする OpenSSL 1.0.1 以降が組み込まれています。

サポートされているバージョンの Ruby を OpenSSL 1.0.1 以降とともに使用している場合、AWS SDK for Ruby は 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 インストール環境で使用されている OpenSSL のバージョンが 1.0.1 より前の場合は、Ruby のインストールガイドの説明に従って、システムパッケージマネージャー、Ruby インストーラ、または Ruby マネージャーを使用して Ruby または OpenSSL インストール環境をアップグレードします。Ruby をソースからインストールする場合、まず最新の OpenSSL をインストールしてから、./configure の実行時に --with-openssl-dir=/path/to/upgraded/openssl を渡します。