

 [AWS SDK for JavaScript V3 API リファレンスガイド](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)では、 AWS SDK for JavaScript バージョン3 (V3) のすべての API オペレーションについて詳しく説明します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 最小 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/)。v3 AWS SDK for JavaScript は TLS バージョン自体をネゴシエートしません。代わりに、`https.Agent` を介して設定可能な Node.js によって決定される TLS バージョンを使用します。 AWS では、現在の Active LTS バージョンの Node.js を使用することをお勧めします。

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

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

Node.js 12.0.0 以降では、TLS 1.3 をサポートする OpenSSL 1.1.1b 以降のバージョンが使用されます。Node.js では、使用可能な場合、デフォルトで 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 バージョンを確認できます。

```
import tls from "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
```

------
#### [ Enforce TLS 1.2 ]

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

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

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

```
import https from "https";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";

const client = new DynamoDBClient({
    region: "us-west-2",
    requestHandler: new NodeHttpHandler({
        httpsAgent: new https.Agent(
            {
                minVersion: 'TLSv1.2'
            }
        )
    })
});
```

------
#### [ Enforce TLS 1.3 ]

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

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

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

```
import https from "https";
import { NodeHttpHandler } from "@smithy/node-http-handler";
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";

const client = new DynamoDBClient({
    region: "us-west-2",
    requestHandler: new NodeHttpHandler({
        httpsAgent: new https.Agent(
            {
                minVersion: 'TLSv1.3'
            }
        )
    })
});
```

------

## ブラウザスクリプトでの 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 \$1 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 が自動的に有効になります。

------

## v3 リクエストでの TLS AWS SDK for JavaScript バージョンの取得
<a name="retrieve-tls-version"></a>

 AWS SDK リクエストで使用される TLS バージョンは、次のスクリプトを使用してログに記録できます。

```
import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3";
import tls from "tls";

const client = new S3Client({ region: "us-east-1" });

const tlsSocket = new tls.TLSSocket();

client.middlewareStack.add((next, context) => async (args) => {
  console.log(`Using TLS version: ${tlsSocket.getProtocol()}`);
    return next(args);
});
```

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

```
Using TLS version: TLSv1.3
```