适用于 JavaScript 的 Amazon SDKV3 API 参考指南详细描述了 适用于 JavaScript 的 Amazon SDK 版本 3 (V3) 的所有 API 操作。
强制使用最低版本的 TLS
要提高与 Amazon 服务通信时的安全性,请将 适用于 JavaScript 的 Amazon SDK 配置为使用 TLS 1.2 或更高版本。
传输层安全性协议(TLS)是 Web 浏览器和其它应用程序使用的一种协议,用于确保通过网络交换的数据的隐私和完整性。
重要
自 2024 年 6 月 10 日起,我们宣布https.Agent 进行配置。Amazon 建议使用 Node.js 的当前活动 LTS 版本。
在 Node.js 中验证并强制执行 TLS
将 适用于 JavaScript 的 Amazon SDK 与 Node.js 结合使用时,将使用底层 Node.js 安全层设置 TLS 版本。
Node.js 12.0.0 及更高版本使用支持 TLS 1.3 的最低版本 OpenSSL 1.1.1b。当 TLS 1.3 可用时,Node.js 默认使用该版本。如有必要,您可以明确指定其他版本。
验证 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
当您在浏览器脚本中使用 SDK for JavaScript 时,浏览器设置会控制所使用的 TLS 版本。浏览器使用的 TLS 版本无法通过脚本发现或设置,必须由用户配置。要验证和强制执行浏览器脚本中使用的 TLS 版本,请参阅特定浏览器的说明。
在适用于 JavaScript 的 Amazon SDK v3 请求中检索 TLS 版本
您可以使用以下脚本记录 Amazon 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