

AWS SDK for JavaScript v2 はサポート終了となりました。[AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) に移行することをお勧めします。その他の詳細、移行方法については、こちらの[発表内容](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)を参照してください。

# TLS の最小バージョンの指定
<a name="enforcing-tls"></a>

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

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

**重要**  
2024 年 6 月 10 日時点で、TLS 1.3 が各 AWS リージョンの AWS サービス API エンドポイントで利用可能であることを[発表しました](https://aws.amazon.com/blogs//security/faster-aws-cloud-connections-with-tls-1-3/)。AWS SDK for JavaScript v2 は TLS バージョン自体をネゴシエートしません。代わりに、`https.Agent` を介して設定可能な Node.js によって決定される TLS バージョンを使用します。AWS では、現在の Active LTS バージョンの Node.js を使用することをお勧めします。

## Node.js での TLS の検証と適用
<a name="node-verify-enforce-tls"></a>

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 v2 では、使用可能な場合、デフォルトで TLS 1.3 が指定されますが、必要な場合はデフォルトで下位バージョンが指定されます。

### OpenSSL および TLS のバージョンを検証します。
<a name="verify-tls-version"></a>

コンピュータ上の 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 バージョンの最小バージョンと最大バージョンの確認
<a name="checking-tls-version-min-max"></a>

開発者は、次のスクリプトを使用して Node.js でサポートされている最小および最大 TLS バージョンを確認できます。

```
var tls = require("tls");
console.log("Supported TLS versions:", tls.DEFAULT_MIN_VERSION + " to " + tls.DEFAULT_MAX_VERSION);
```

最後のコマンドは、次の例に示すようにデフォルトの最小および最大の TLS のバージョンを出力します。

```
Supported TLS versions: TLSv1.2 to TLSv1.3
```

### TLS の最小バージョンの指定
<a name="enforce-tls-version"></a>

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

コマンドラインから TLS の最小バージョンを指定するには、Node.js バージョン 11.4.0 以降を使用する必要があります。特定の Node.js バージョンをインストールするには、まず「[Node Version Manager のインストールと更新](https://github.com/nvm-sh/nvm#installing-and-updating)」のステップを使用して、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 の検証と適用
<a name="browser-verify-enforce-tls"></a>

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

------
#### [ Microsoft Internet Explorer ]

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

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

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

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

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

------
#### [ Microsoft Edge ]

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

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

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

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

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

------
#### [ Google Chrome ]

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

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

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

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

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

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

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

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

------
#### [ Mozilla Firefox ]

1. **Firefox** を開きます。

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

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

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

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

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

------
#### [ Apple Safari ]

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

------