适用于 JavaScript 的 AWS SDK V3 API 参考指南详细描述了 适用于 JavaScript 的 AWS SDK 版本 3 (V3) 的所有 API 操作。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
强制使用最低版本的 TLS
要在与 AWS 服务通信时提高安全性,请将配置 适用于 JavaScript 的 AWS SDK 为使用 TLS 1.2 或更高版本。
传输层安全性协议(TLS)是 Web 浏览器和其它应用程序使用的一种协议,用于确保通过网络交换的数据的隐私和完整性。
重要
自 2024 年 6 月 10 日起,我们宣布https.Agent
进行配置。 AWS 建议使用 Node.js 的当前活动 LTS 版本。
在 Node.js 中验证并强制执行 TLS
当你将 Node.js 适用于 JavaScript 的 AWS SDK 与一起使用时,底层 Node.js 安全层用于设置 TLS 版本。
Node.js 12.0.0 及更高版本使用支持 TLS 1.3 的最低版本 OpenSSL 1.1.1b。Node.js 在可用时默认使用 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 版本:
import tls from "tls"; console.log("Supported TLS versions:", tls.DEFAULT_MIN_VERSION + " to " + tls.DEFAULT_MAX_VERSION);
最后一个命令输出默认的最低和最高 TLS 版本,如以下示例所示。
Supported TLS versions: TLSv1.2 to TLSv1.3
强制使用最低版本的 TLS
当调用失败时,Node.js 会协商 TLS 的版本。您可以在此协商期间强制执行允许的最低 TLS 版本,无论是在命令行运行脚本时,还是在根据 JavaScript 代码中的请求运行脚本时。
要通过命令行指定最低 TLS 版本,必须使用 Node.js 版本 11.4.0 或更高版本。要安装特定的 Node.js 版本,请先按照 Node Version Manager Installing and Updating
nvm install 11 nvm use 11
在浏览器脚本中验证并强制执行 TLS
当您在浏览器脚本 JavaScript 中使用 SDK 时,浏览器设置会控制所使用的 TLS 版本。浏览器使用的 TLS 版本无法通过脚本发现或设置,必须由用户配置。要验证和强制执行浏览器脚本中使用的 TLS 版本,请参阅特定浏览器的说明。
在 v 适用于 JavaScript 的 AWS SDK 3 请求中检索 TLS 版本
您可以使用以下脚本记录 AWS SDK 请求中使用的 TLS 版本:
import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3"; import tls from "tls"; const client = new S3Client({ region: "us-east-1" }); const tlsSocket = new tls.TLSSocket(); client.middlewareStack.add((next, context) => async (args) => { console.log(`Using TLS version: ${tlsSocket.getProtocol()}`); return next(args); });
最后一个命令输出正在使用的 TLS 版本,如以下示例所示。
Using TLS version: TLSv1.3