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

Quarkus中JWT调用innerSignAndEncrypt加密报密钥为空错误如何解决

Quarkus JWT加密报错The key must not be null解决方案

根因说明

报错核心是Smallrye JWT(Quarkus内置JWT实现)没有成功加载你配置的加密/解密密钥,导致解密阶段密钥为空,按以下步骤排查修复:

  • 检查密钥文件存放路径

    你配置的是相对路径,需确保publicKey.pem和privateKey.pem均存放在项目src/main/resources目录下,否则Quarkus启动时无法读取对应文件,会静默返回null触发报错。
  • 校验密钥格式

    测试用RSA密钥对需符合以下格式要求:
    • 公钥开头必须为-----BEGIN PUBLIC KEY-----,不能是证书格式的-----BEGIN CERTIFICATE-----
    • 私钥如果是加密状态(开头为-----BEGIN ENCRYPTED PRIVATE KEY-----),需要补充私钥密码配置
  • 补充缺失的必要配置

    你当前仅配置了密钥路径,缺少加密算法的显式声明,Smallrye JWT默认不会自动选择加密算法,需在配置文件中新增以下内容:
    # 签名算法,和RSA密钥匹配即可,常用RS256
    smallrye.jwt.sign.algorithm=RS256
    # 密钥管理算法,RSA加密场景必须配置,常用RSA-OAEP-256
    smallrye.jwt.encrypt.key.algorithm=RSA-OAEP-256
    # 内容加密算法,常用A256GCM
    smallrye.jwt.encrypt.content.algorithm=A256GCM
    # 如果私钥有密码,补充以下两项配置
    # smallrye.jwt.sign.key.password=你的私钥密码
    # mp.jwt.decrypt.key.password=你的私钥密码
    
  • 修正API调用方式

    Jwt.innerSignAndEncrypt是嵌套JWT场景专用API,普通签发加密+签名JWT直接调用以下方法即可:
    Jwt.claims(jsonObject).signAndEncrypt();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:36:03