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

使用RS256时提示secretOrPrivateKey需为非对称密钥的解决方法

问题描述

我的代码如下:

const jwtPrivateKey = process.env.JWT_PRIVATE;

let signedJWT = jwt.sign(payload, jwtPrivateKey, {algorithm: "RS256"})

环境变量文件内容:

JWT_PRIVATE=-----BEGIN RSA PRIVATE KEY-----MIIEAQLdSMt......N/UiIUiWCxfESQ-----END RSA PRIVATE KEY----- 

每次调用都会报错:Error: secretOrPrivateKey must be an asymmetric key when using RS256

使用环境:Windows 10系统,Node.js v18.16.1版本(已尝试升级至20.3.1,也试过Stack Overflow相关问题的前两个解决方案,问题仍未解决)

解决方案
  • 修复环境变量中的私钥格式
    Windows环境变量不支持直接存储多行文本,当前拼接成一行的私钥无法被JWT库正确识别为RSA非对称密钥。两种解决方式:

    1. 将私钥保存为本地文件(如private.key),通过文件读取获取正确格式:
      const fs = require('fs');
      const path = require('path');
      
      const jwtPrivateKey = fs.readFileSync(path.join(__dirname, 'private.key'), 'utf8');
      let signedJWT = jwt.sign(payload, jwtPrivateKey, {algorithm: "RS256"});
      
    2. 若坚持使用环境变量,手动在私钥的每段之间插入换行符\n:
      JWT_PRIVATE=-----BEGIN RSA PRIVATE KEY-----\nMIIEAQLdSMt......\nN/UiIUiWCxfESQ\n-----END RSA PRIVATE KEY----- 
      
  • 验证私钥有效性
    用OpenSSL命令检查私钥是否为标准PKCS#1格式:

openssl rsa -in private.key -check

如果命令报错,说明私钥格式损坏,需要重新生成或导出正确的RSA私钥。

  • 更新JWT库版本
    执行命令更新jsonwebtoken到最新版本,避免旧版本的解析兼容问题:
npm update jsonwebtoken

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:05:07