TLS の最小バージョンの指定 - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

TLS の最小バージョンの指定

重要

AWS SDK for JavaScript v2 は、指定された AWS サービスエンドポイントがサポートする最大レベルの TLS バージョンを自動的にネゴシエートします。オプションで、TLS 1.2 や 1.3 など、アプリケーションに必要な最小 TLS バージョンを指定できますが、一部の AWS サービスエンドポイントでは TLS 1.3 はサポートされていないことに注意してください。TLS 1.3 を指定すると一部の呼び出しが失敗することがあります。

AWS のサービスとの通信時にセキュリティを強化するには、TLS 1.2 以降を使用するように AWS SDK for JavaScript を設定します。

Transport Layer Security (TLS) は、ネットワーク上で交換されるデータのプライバシーと整合性を確保するために、ウェブブラウザやその他のアプリケーションで使用されるプロトコルです。

Node.js での TLS の検証と適用

AWS SDK for JavaScript と Node.js を共に使用すると、基盤となる Node.js セキュリティレイヤーを使用して TLS バージョンが設定されます。

Node.js 12.0.0 以降では、TLS 1.3 をサポートする OpenSSL 1.1.1b 以降のバージョンが使用されます。AWS SDK for JavaScript v3 では、使用可能な場合、デフォルトで TLS 1.3 が指定されますが、必要な場合はデフォルトで下位バージョンが指定されます。

OpenSSL および TLS のバージョンを検証します。

コンピュータ上の Node.js で使用されている OpenSSL のバージョンを取得するには、次のコマンドを実行します。

node -p process.versions

リスト内の OpenSSL のバージョンは、次の例に示すように、Node.js で使用されるバージョンです。

openssl: '1.1.1b'

コンピュータ上の Node.js で使用されている TLS のバージョンを取得するには、Node シェルを起動し、次のコマンドを順に実行します。

> var tls = require("tls"); > var tlsSocket = new tls.TLSSocket(); > tlsSocket.getProtocol();

最後のコマンドは、次の例に示すように TLS のバージョンを出力します。

'TLSv1.3'

Node.js はデフォルトでこのバージョンの TLS を使用し、呼び出しが失敗した場合は別のバージョンの TLS のネゴシエートを試みます。

TLS の最小バージョンの指定

Node.js は、呼び出しが失敗した場合に TLS のバージョンをネゴシエートします。コマンドラインからスクリプトを実行するとき、または JavaScript コードのリクエストごとに、このネゴシエーション中に TLS の最小バージョンを指定できます。

コマンドラインから TLS の最小バージョンを指定するには、Node.js バージョン 11.0.0 以降を使用する必要があります。特定の Node.js バージョンをインストールするには、まず「Node Version Manager のインストールと更新」のステップを使用して、Node Version Manager (nvm) をインストールします。続いて、次のコマンドを実行し、特定バージョンの Node.js をインストールして使用します。

nvm install 11 nvm use 11
Enforcing TLS 1.2

TLS 1.2 が最小許容バージョンであることを指定するには、次の例に示すように、スクリプトの実行時に --tls-min-v1.2 引数を指定します。

node --tls-min-v1.2 yourScript.js

JavaScript コード内の特定のリクエストに対して最小許容 TLS バージョンを指定するには、次の例に示すように、httpOptions パラメータを使用してプロトコルを指定します。

const https = require("https"); const {NodeHttpHandler} = require("@aws-sdk/node-http-handler"); const {DynamoDBClient} = require("@aws-sdk/client-dynamodb"); const client = new DynamoDBClient({ region: "us-west-2", requestHandler: new NodeHttpHandler({ httpsAgent: new https.Agent( { secureProtocol: 'TLSv1_2_method' } ) }) });
Enforcing TLS 1.3

TLS 1.3 が最小許容バージョンであることを指定するには、次の例に示すように、スクリプトの実行時に --tls-min-v1.3 引数を指定します。

node --tls-min-v1.3 yourScript.js

JavaScript コード内の特定のリクエストに対して最小許容 TLS バージョンを指定するには、次の例に示すように、httpOptions パラメータを使用してプロトコルを指定します。

const https = require("https"); const {NodeHttpHandler} = require("@aws-sdk/node-http-handler"); const {DynamoDBClient} = require("@aws-sdk/client-dynamodb"); const client = new DynamoDBClient({ region: "us-west-2", requestHandler: new NodeHttpHandler({ httpsAgent: new https.Agent( { secureProtocol: 'TLSv1_3_method' } ) }) });

ブラウザスクリプトでの TLS の検証と適用

ブラウザスクリプトで SDK for JavaScript を使用する場合、ブラウザの設定によって、使用される TLS のバージョンが制御されます。ブラウザで使用される TLS のバージョンは、スクリプトによって検出または設定できないため、ユーザーが設定する必要があります。ブラウザスクリプトで使用される TLS のバージョンを検証して適用する方法については、お使いのブラウザの手順を参照してください。

Microsoft Internet Explorer
  1. Internet Explorer を開きます。

  2. メニューバーから、[ツール] - [インターネットオプション] - [詳細設定] タブを選択します。

  3. [セキュリティ] まで下にスクロールし、[TLS 1.2 の使用] チェックボックスを手動でオンにします。

  4. [OK] をクリックします。

  5. ブラウザを閉じて、Internet Explorer を再起動します。

Microsoft Edge
  1. Windows メニューの検索ボックスに、「インターネットオプション」と入力します。

  2. [最も一致する検索結果] で、[インターネットオプション] をクリックします。

  3. [インターネットのプロパティ] ウィンドウの [詳細設定] タブで、[セキュリティ] セクションまで下にスクロールします。

  4. [TLS 1.2 の使用] チェックボックスをオンにします。

  5. [OK] をクリックします。

Google Chrome
  1. Google Chrome を開きます。

  2. Alt + F キーを押し、[設定] を選択します。

  3. 下にスクロールし、[詳細設定] を選択します。

  4. [システム] まで下にスクロールし、[パソコンのプロキシ設定を開く] をクリックします。

  5. [詳細設定] タブを選択します。

  6. [セキュリティ] まで下にスクロールし、[TLS 1.2 の使用] チェックボックスを手動でオンにします。

  7. [OK] をクリックします。

  8. ブラウザを閉じて Google Chrome を再起動します。

Mozilla Firefox
  1. Firefox を開きます。

  2. アドレスバーに「about:config」と入力し、Enter キーを押します。

  3. [検索] フィールドに「tls」と入力します。[security.tls.version.min] のエントリを見つけてダブルクリックします。

  4. TLS 1.2 プロトコルをデフォルトに指定するには、整数値を 3 に設定します。

  5. [OK] をクリックします。

  6. ブラウザを閉じて Mozilla Firefox を再起動します。

Apple Safari

SSL プロトコルを有効にするオプションはありません。Safari バージョン 7 以降を使用している場合は、TLS 1.2 が自動的に有効になります。