You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nodejs14 HapiJS服务启用HTTPS报error:06065064坏解密错误问询

错误根因说明

你遇到的error:06065064:digital envelope routines:EVP_Decryptfinal_ex:bad decrypt错误是Node.js内置OpenSSL模块抛出的加密私钥解密失败错误,和上层服务逻辑无关,以下对应你的三个问题逐一解答:


1. 该问题是否是HapiJS本身的问题?

不是。
HapiJS的TLS/HTTPS配置直接复用Node.js标准https模块的入参规则,这个错误是底层加密依赖抛出的,和HapiJS的上层封装没有关联。你可以直接用Node.js原生https模块加载同一份证书密钥测试,如果抛出相同错误即可完全排除HapiJS的问题。

2. 问题是否出在证书或密钥本身?

大概率不是密钥本身损坏,而是加密私钥的解密参数适配问题,你可以先通过以下步骤验证密钥有效性:

  • 执行OpenSSL命令校验密钥:openssl rsa -in 你的私钥文件路径.key -check,输入密钥加密密码后如果能正常输出RSA密钥参数,即可确认密钥本身没有损坏
  • 核对客户服务器上使用的私钥密码和Venafi生成密钥时设置的密码是否完全一致,排查空格、大小写、特殊字符编码等问题
  • 确认客户服务器系统的OpenSSL版本没有被裁剪,Node.js 14自带的OpenSSL版本原生支持DES-EDE3-CBC加密的私钥,不存在兼容性问题

3. 我们创建服务时是否需要传入特定的Node https配置项?

需要。
你拿到的私钥是密码加密的类型,必须在TLS配置中额外传入passphrase参数填写私钥加密密码,该参数会直接透传给Node.js的https模块用于私钥解密,HapiJS的配置示例如下:

const fs = require('fs');
const Hapi = require('@hapi/hapi');

const init = async () => {
  const server = Hapi.server({
    port: 443,
    host: '0.0.0.0',
    tls: {
      key: fs.readFileSync('./private.key'),
      cert: fs.readFileSync('./cert.crt'),
      // 新增该行,填写Venafi生成密钥时设置的加密密码
      passphrase: '你的私钥加密密码'
    }
  });

  await server.start();
};

process.on('unhandledRejection', (err) => {
  console.log(err);
  process.exit(1);
});

init();

如果确认密码正确仍报错,可以先通过OpenSSL命令解密私钥后再加载,无需再传passphrase参数:
openssl rsa -in 加密私钥.key -out 解密后私钥.key


内容的提问来源于stack exchange,提问作者Croeber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:51:00