使用NATS.io的NAS、NSC时出现unexpected "ed25519-nkey" algorithm错误
问题根因
ed25519-nkey是NATS工具链2.8.0版本之后引入的定制化JWT签名算法,原生适配NATS的nkey身份体系,并非通用公开算法。你遇到的版本不匹配问题来自两个层面:
- 你本地和Docker镜像中安装的是最新版NSC,默认使用
ed25519-nkey算法生成JWT - 你使用的
synadia/nats-account-server:0.8.4和1.0.0均为2021年及之前发布的老版本,仅支持标准ed25519算法的JWT校验,无法识别新算法标识
解决方案
你可以根据自己的业务场景选择以下任意一种方案:
方案1:保留旧版本NAS,强制JWT使用旧算法
- 本地生成operator时添加参数指定算法:执行
nsc add operator -i --alg ed25519,生成的JWT即可被旧版本NAS正常识别 - 同步修改Dockerfile中的NSC安装逻辑,固定安装2.7.0及以下版本的NSC,避免容器内操作生成的JWT出现算法不兼容问题
- 替换EFS中存储的JWT文件为新生成的旧算法版本,确认Fargate挂载的EFS文件权限对NAS进程可读
方案2:升级NAS版本适配新算法
ed25519-nkey算法的支持在NAS 2.0+版本才正式加入,你需要将基础镜像升级到2.3.0及以上版本:
- 将Dockerfile中的基础镜像替换为
FROM synadia/nats-account-server:2.3.0 - 升级后核对旧版本
server.conf的配置项兼容性,官方已废弃的配置项需要按照新版本要求调整
内容的提问来源于stack exchange,提问作者Nav
相关产品推荐
相关产品推荐

