AWS SDK for JavaScript V3 API 參考指南會詳細說明第 3 版 AWS SDK for JavaScript (V3) 的所有 API 操作。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
強制執行最低 TLS 版本
若要在與服務通訊時增加安全性 AWS , AWS SDK for JavaScript 請將 設定為使用 TLS 1.2 或更新版本。
AWS SDK for JavaScript v3 會自動交涉指定 AWS 服務端點支援的最高層級 TLS 版本。您可以選擇性地強制執行應用程式所需的最低 TLS 版本,例如 TLS 1.2 或 1.3,但請注意,某些 AWS 服務端點不支援 TLS 1.3,因此如果您強制執行 TLS 1.3,某些呼叫可能會失敗。
傳輸層安全性 (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 版本,請啟動節點 shell,並依序執行以下命令。
>
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 版本管理員安裝和更新中的步驟來安裝 Node 版本管理員 (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 版本,請使用 httpOptions
參數來指定通訊協定,如以下範例所示。
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(
{
secureProtocol: 'TLSv1_2_method'
}
)
})
});
- Enforce TLS 1.3
-
若要強制執行 TLS 1.3 是允許的最小版本,請在執行指令碼時指定--tls-min-v1.3
引數,如下列範例所示。
node --tls-min-v1.3 yourScript
.js
若要為 JavaScript 程式碼中的特定請求指定允許的最低 TLS 版本,請使用 httpOptions
參數來指定通訊協定,如以下範例所示。
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(
{
secureProtocol: 'TLSv1_3_method'
}
)
})
});
在瀏覽器指令碼中驗證並強制執行 TLS
當您在瀏覽器指令碼中使用適用於 JavaScript 的 SDK 時,瀏覽器設定會控制使用的 TLS 版本。瀏覽器使用的 TLS 版本無法透過指令碼探索或設定,而且必須由使用者設定。若要驗證並強制執行瀏覽器指令碼中使用的 TLS 版本,請參閱特定瀏覽器的指示。
- Microsoft Internet Explorer
-
-
開啟 Internet Explorer。
-
從選單列中,選擇工具 - 網際網路選項 - 進階索引標籤。
-
向下捲動至安全類別,手動勾選使用 TLS 1.2 的選項方塊。
-
按一下 OK (確定)。
-
關閉瀏覽器並重新啟動 Internet Explorer。
- Microsoft Edge
-
-
在 Windows 選單搜尋方塊中,輸入網際網路選項
。
-
在最佳相符項下,按一下網際網路選項。
-
在網際網路屬性視窗的進階索引標籤上,向下捲動至安全區段。
-
勾選使用者 TLS 1.2 核取方塊。
-
按一下 OK (確定)。
- Google Chrome
-
-
開啟 Google Chrome。
-
按一下 Alt F 並選取設定。
-
向下捲動並選取顯示進階設定...。
-
向下捲動至系統區段,然後按一下開啟代理設定...。
-
選取進階索引標籤。
-
向下捲動至安全類別,手動勾選使用 TLS 1.2 的選項方塊。
-
按一下 OK (確定)。
-
關閉您的瀏覽器並重新啟動 Google Chrome。
- Mozilla Firefox
-
-
開啟 Firefox。
-
在地址列中,輸入 about:config,然後按 Enter。
-
在搜尋欄位中,輸入 tls。尋找並按兩下 security.tls.version.min 的項目。
-
將整數值設定為 3,強制 TLS 1.2 的通訊協定成為預設值。
-
按一下 OK (確定)。
-
關閉您的瀏覽器並重新啟動 Mozilla Firefox。
- Apple Safari
-
沒有啟用 SSL 通訊協定的選項。如果您使用的是 Safari 第 7 版或更新版本,TLS 1.2 會自動啟用。