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

部署在Render.com的Node.js Google API出现ERR_OSSL_UNSUPPORTED错误

解决Render.com部署Node.js应用时Google JWT认证的OpenSSL错误

本地运行正常的Node.js应用,部署到Render.com后在Google JWT客户端认证阶段触发OpenSSL错误:error:1E08010C:DECODER routines::unsupported,以下是针对性的解决方法:

核心原因

该错误源于OpenSSL无法正确解码Google服务账号的私钥,通常是环境变量中私钥的格式处理错误导致。

解决方案

1. 修正Render环境变量的私钥配置

  • 登录Render控制台,找到对应服务的环境变量设置。
  • 删除原有google_private_key的配置值,直接粘贴原始私钥内容:包括-----BEGIN PRIVATE KEY-----、所有密钥行、-----END PRIVATE KEY-----,不要添加任何引号,也不要用\n替代换行。
  • Render的环境变量支持多行内容,直接粘贴原始私钥即可保留正确的换行格式。

2. 调整代码中的私钥处理逻辑

去掉代码中对私钥的转义替换,直接读取环境变量:

// 替换原有替换逻辑
const google_private_key = process.env.google_private_key;

本地.env文件中用\n转义换行是因为文件本身不支持多行环境变量,但Render的环境变量不需要这一步,多余的替换会破坏私钥的原始格式。

3. 对齐Node.js版本

在项目的package.json中添加引擎声明,指定和本地一致的Node.js版本,避免版本差异导致的OpenSSL调用问题:

"engines": {
  "node": "16.x" // 替换为你本地使用的版本
}

Render会根据这个声明使用对应版本的Node.js运行应用。

4. 验证私钥完整性

确认复制到Render的私钥和本地服务账号密钥文件(JSON格式)中的private_key字段完全一致,没有缺失字符或多余的空格。

已尝试方法的补充说明

  • 硬编码私钥未解决:可能是硬编码时同样存在格式错误(比如多余的转义或引号)。
  • 本地切换OpenSSL版本未复现:因为本地环境变量的私钥格式处理和Render不同,复现场景不一致。
  • 给环境变量加引号:会导致私钥被包裹在引号中,OpenSSL无法识别有效密钥格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:27:45