強制執行 TLS 最低版本 - AWS SDK for JavaScript

我們宣布了即將推 end-of-support 出的 AWS SDK for JavaScript v2。我們建議您移轉至 AWS SDK for JavaScript v3。有關日期,其他詳細信息以及如何遷移的信息,請參閱鏈接的公告。

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

強制執行 TLS 最低版本

重要

AWS SDK for JavaScript v2 會自動交涉指定 AWS 服務端點所支援的最高層級 TLS 版本。您可以選擇性地強制執行應用程式所需的最低 TLS 版本,例如 TLS 1.2 或 1.3,但請注意,某些 AWS 服務端點不支援 TLS 1.3,因此如果您強制執行 TLS 1.3,某些呼叫可能會失敗。

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

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

在 Node.js 中驗證和強制執行 TLS

當您 AWS SDK for JavaScript 搭配 Node.js 使用時,會使用基礎 Node.js 安全性層來設定 TLS 版本。

Node.js 12.0.0 及更新版本使用支援 TLS 1.3 的最低版本。 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 的版本。您可以在此協商期間強制執行最低允許的 TLS 版本,無論是從命令列執行指令碼或 JavaScript 程式碼中的每個要求時。

若要從命令列指定最低 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

當您在瀏覽器指令碼 JavaScript 中使用 SDK 時,瀏覽器設定會控制所使用的 TLS 版本。瀏覽器使用的 TLS 版本無法透過指令碼探索或設定,而且必須由使用者設定。若要驗證並強制執行瀏覽器指令碼中使用的 TLS 版本,請參閱特定瀏覽器的指示。

Microsoft Internet Explorer
  1. 打開 IE 瀏覽器

  2. 從功能表列選擇 [工具]-[網際網路選項]-[進階] 標籤。

  3. 向下捲動至 [安全性] 類別,手動勾選 [使用 TLS 1.2] 的選項方塊。

  4. 按一下 OK (確定)

  5. 關閉瀏覽器並重新啟動 IE 瀏覽器。

Microsoft Edge
  1. 在 Windows 功能表搜尋方塊中,輸入網際網路選項

  2. 最符合下,按一下網際網路選項

  3. 在 [網際網路內容] 視窗的 [進階] 索引標籤上,向下捲動至 [安全性] 區段。

  4. 勾選使用者 TLS 1.2 核取方塊。

  5. 按一下 OK (確定)

Google Chrome
  1. 打開谷歌瀏覽器

  2. 按一下 Alt F 並選取「設定」。

  3. 向下捲動並選擇顯示進階設定...

  4. 向下滾動到系部分,然後單擊打開代理設置...

  5. 選取 [進] 索引標籤。

  6. 向下捲動至 [安全性] 類別,手動勾選 [使用 TLS 1.2] 的選項方塊。

  7. 按一下 OK (確定)

  8. 關閉瀏覽器並重新啟動谷歌瀏覽器。

Mozilla Firefox
  1. 打開火狐

  2. 網址列中,輸入「關於:組態」,然後按 Enter 鍵。

  3. 在「搜尋」欄位中,輸入 tls。尋找並連按兩下安全性 .tls.min 版本的項目。

  4. 將整數值設定為 3 以強制 TLS 1.2 的通訊協定為預設值。

  5. 按一下 OK (確定)

  6. 關閉瀏覽器並重新啟動火狐瀏覽器。

Apple Safari

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