我正在致力于将一些 lambda 运行时从节点 16 迁移到节点 18,但遇到了证书问题。我们创建一个 https.Agent() 将配置传递给 HTTP 请求,pfx 属性是 p12 证书的缓冲区。
const options = {
pfx: certificate,
passphrase: 'test',
rejectUnauthorized: true,
};
const sslConfiguredAgent = new https.Agent(options);
我发现该问题与核心 Node 库中的 OpenSSL 有关,因此为了解决它,我尝试了以下方法:
从 AWS_LAMBDA_EXEC_WRAPPER 访问包装器脚本:/opt/data/wrapper
#!/bin/bash
args=("$@")
export NODE_OPTIONS="--openssl-legacy-provider"
exec "${args[@]}"
也许错误可能与脚本有关,但我是根据我找到的有关它的信息构建的。
我通过更新此 git 问题 link 之后的 pfx 文件上的密码找到了解决此问题的方法。完成此操作后,节点 18 就能够通过 HTTP 请求发送它,而无需使用标志
--openssl-legacy-provider
用于更新密码的命令:
openssl pkcs12 -in currentFile.p12 -nodes -legacy -out decryptedPfxFile.tmp
openssl pkcs12 -in decryptedPfxFile.tmp -export -out newFile.p12
这些命令将询问当前文件使用的密码。