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

帮助我们改进Amazon SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:Amazon SDK for JavaScriptV3 API 参考指南详细描述了Amazon SDK for JavaScript版本 3 (V3)。

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

强制执行最低 TLS 版本

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

重要

这些区域有:Amazon SDK for JavaScriptv3 会自动协商给定的支持的最高级别的 TLS 版本Amazon服务终端节点。您可以选择强制执行应用程序所需的最低 TLS 版本,例如 TLS 1.2 或 1.3,但请注意,某些应用程序不支持 TLS 1.3Amazon服务终端节点,因此如果您实施 TLS 1.3,某些调用可能会失败

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

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

当您使用Amazon SDK for JavaScript使用 Node.js,底层 Node.js 安全层用于设置 TLS 版本。

Node.js 12.0.0 及更高版本使用 OpenSSL 1.1.1b 的最低版本,该版本支持 TLS 1.3。这些区域有:Amazon SDK for JavaScriptv3 在可用时默认使用 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 版本,首先使用下面的步骤安装节点版本管理器 (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

要在您的中为特定请求指定允许的最低 TLS 版本 JavaScript 代码,请使用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

要在您的中为特定请求指定允许的最低 TLS 版本 JavaScript 代码,请使用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

当你使用 SDK JavaScript 在浏览器脚本中,浏览器设置控制所使用的 TLS 版本。无法通过脚本发现或设置浏览器使用的 TLS 版本,必须由用户配置。要验证和强制执行浏览器脚本中使用的 TLS 版本,请参阅特定浏览器的说明。

Microsoft Internet Explorer
  1. 打开Internet Explorer.

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

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

  4. 单击 OK(确定)。

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

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

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

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

  4. 检查用户 TLS 1.2复选框。

  5. 单击 OK(确定)。

Google Chrome
  1. 打开Google Chrome.

  2. 单击Alt F然后选择设置.

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

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

  5. SELECTAdvanced选项卡。

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

  7. 单击 OK(确定)。

  8. 关闭浏览器然后重新启动谷歌 Chrome。

Mozilla Firefox
  1. 打开火狐.

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

  3. 搜索字段中,输入TLS. 查找并双击的条目安全性 .tls.version .min.

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

  5. 单击 OK(确定)。

  6. 关闭浏览器然后重新启动 Mozilla Firefox。

Apple Safari

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