

 [適用於 JavaScript 的 AWS SDK V3 API 參考指南](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/)詳細說明 第 3 版 適用於 JavaScript 的 AWS SDK (V3) 的所有 API 操作。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 強制執行最低 TLS 版本
<a name="enforcing-tls"></a>

若要在與 AWS 服務通訊時增加安全性， 適用於 JavaScript 的 AWS SDK 請將 設定為使用 TLS 1.2 或更新版本。

傳輸層安全性 (TLS) 是網頁瀏覽器和其他應用程式使用的通訊協定，以確保透過網路交換資料的隱私和完整性。

**重要**  
截至 2024 年 6 月 10 日，我們[宣布](https://aws.amazon.com/blogs//security/faster-aws-cloud-connections-with-tls-1-3/) TLS 1.3 可在每個 AWS 區域的 AWS 服務 API 端點上使用。 適用於 JavaScript 的 AWS SDK v3 不會交涉 TLS 版本本身。而是使用 Node.js 決定的 TLS 版本，可透過 設定`https.Agent`。 AWS 建議使用目前的作用中 LTS 版本的 Node.js。

## 在 Node.js 中驗證和強制執行 TLS
<a name="node-verify-enforce-tls"></a>

當您 適用於 JavaScript 的 AWS SDK 搭配 Node.js 使用 時，會使用基礎 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 版本，請啟動節點 shell，並依序執行以下命令。

```
> 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 版本管理員安裝[和更新中的步驟來安裝 Node 版本管理員](https://github.com/nvm-sh/nvm#installing-and-updating) (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>

當您在瀏覽器指令碼中使用適用於 JavaScript 的 SDK 時，瀏覽器設定會控制使用的 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. 將整數值設定為 3，強制 TLS 1.2 的通訊協定成為預設值。

1. 按一下 **OK (確定)**。

1. 關閉您的瀏覽器並重新啟動 Mozilla Firefox。

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

沒有啟用 SSL 通訊協定的選項。如果您使用的是 Safari 第 7 版或更新版本，則會自動啟用 TLS 1.2。

------

## 在 適用於 JavaScript 的 AWS SDK v3 請求中擷取 TLS 版本
<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
```