强制使用最低版本的 TLS - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon SDK for JavaScript V3 API 参考指南详细描述了 Amazon SDK for JavaScript 版本 3 (V3) 的所有 API 操作。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

强制使用最低版本的 TLS

要在与 Amazon 服务通信时提高安全性,请将配置 Amazon SDK for JavaScript 为使用 TLS 1.2 或更高版本。

重要

Amazon SDK for JavaScript v3 会自动协商给定 Amazon 服务端点支持的最高级别 TLS 版本。您可以选择强制执行应用程序要求的最低 TLS 版本,例如 TLS 1.2 或 1.3,但请注意,某些 Amazon 服务端点不支持 TLS 1.3,因此,如果您强制执行 TLS 1.3,则某些调用可能会失败。

传输层安全性协议(TLS)是 Web 浏览器和其它应用程序使用的一种协议,用于确保通过网络交换的数据的隐私和完整性。

在 Node.js 中验证并强制执行 TLS

当你将 Node.js Amazon SDK for JavaScript 与一起使用时,底层 Node.js 安全层用于设置 TLS 版本。

Node.js 12.0.0 及更高版本使用支持 TLS 1.3 的最低版本 OpenSSL 1.1.1b。 Amazon 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 版本,请启动 Node 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 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 版本,请使用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
  1. 打开 Internet Explorer

  2. 从菜单栏中选择工具 - Internet 选项 - 高级选项卡。

  3. 向下滚动到安全类别,手动选中使用 TLS 1.2 选项框。

  4. 单击确定

  5. 关闭浏览器并重新启动 Internet Explorer。

Microsoft Edge
  1. 在 Windows 菜单搜索框中,键入 Internet options

  2. 最佳匹配下,单击 Internet 选项

  3. Internet 属性窗口的高级选项卡上,向下滚动到安全部分。

  4. 选中用户 TLS 1.2 复选框。

  5. 单击 确定

Google Chrome
  1. 打开 Google Chrome

  2. Alt F 并选择设置

  3. 向下滚动并选择显示高级设置...

  4. 向下滚动到系统部分,然后单击打开代理设置...

  5. 选择高级选项卡。

  6. 向下滚动到安全类别,手动选中使用 TLS 1.2 选项框。

  7. 单击确定

  8. 关闭浏览器并重启 Google Chrome。

Mozilla Firefox
  1. 打开 Firefox

  2. 在地址栏中键入 about:config,然后按 Enter。

  3. 搜索字段中输入 tls。找到并双击 security.tls.version.min 条目。

  4. 将整数值设置为 3 以强制将 TLS 1.2 协议设为默认协议。

  5. 单击 确定

  6. 关闭浏览器并重启 Mozilla Firefox。

Apple Safari

没有启用 SSL 协议的选项。如果您使用的是 Safari 浏览器 7 或更高版本,则会自动启用 TLS 1.2。