Den*_*zus 15 base64 openssl pem node.js cryptojs
我的 Git 目录中有两个并行运行的节点项目。
相同版本的节点 14.5,根中相同的 pem 密钥,一切都相同。然而,一个节点进程能够签署我的 base64 pem 密钥,而另一个节点进程则不能。我可以删除 base64 设置,但仍然有一个进程处理符号,而另一个则不处理。
我从 sign.sign() 方法收到此错误消息。
错误:25066067:DSO 支持例程:dlfcn_load:无法加载共享库
代码如下:
const crypto = require('crypto');
var policy = {
Statement: [
{
Resource: 'https://dev.geolytix.io/mapp/workspace.json',
Condition: { DateLessThan: { 'AWS:EpochTime': Date.now() + 60 * 60 * 1000 } },
},
],
};
var sign = crypto.createSign('RSA-SHA1');
sign.write(JSON.stringify(policy));
var pem = String(readFileSync(join(__dirname, `./mykey.pem`)))
let signature = sign.sign(pem, 'base64')
Run Code Online (Sandbox Code Playgroud)
我注意到将操作系统更新到 Ubuntu 22.04 后出现了问题。
我已清除 openssl(版本 3)并从源代码手动安装 openssl 1.1.1o。https://fedingo.com/how-to-install-openssl-in-ubuntu/ 不幸的是,这将删除其他需要较新版本 OpenSSL 的应用程序,例如 Chrome。
我现在可以手动构建和安装 openssl 3.0.3。加密模块仍然失败。
Air*_*err 21
作为快速修复,请运行:
export OPENSSL_CONF=/dev/null
或者,将您的节点至少升级到v18.x.
这两个答案均来自评论。我真正想添加的是如何在 Heroku 环境中设置 OPENSSL_CONF。在您的应用程序设置中,在“配置变量”下执行以下操作:
| 归档时间: |
|
| 查看次数: |
13938 次 |
| 最近记录: |