强制实施最低 TLS 版本 - AWS SDK for JavaScript

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

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

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

强制实施最低 TLS 版本

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

重要

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

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

在 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 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。

强制实施最低版本

当调用失败时,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. 从菜单栏中,选择工具-Inet-Advanced选项卡。

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

  4. 单击 OK(确定)。

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

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

  2. UNDER最佳匹配,点击Inet.

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

  4. 检查用户 TLS 1.2check。

  5. 单击 OK(确定)。

Google Chrome
  1. 打开Google Chrome.

  2. 单击Alt并选择设置.

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

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

  5. 选择Advanced选项卡。

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

  7. 单击 OK(确定)。

  8. 关闭浏览器并重新启动谷歌浏览器。

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。