JWT签名是否支持使用非对称密钥、证书等非对称算法实现?
JWT完全支持非对称签名方案
这是JWT规范原生定义的标准能力,完全可以匹配你描述的多服务端校验的使用场景。
常用的JWT非对称签名算法
JWT标准中已经内置了多套非对称签名算法可供选择:
- RSA系列:
RS256(SHA-256 + RSA签名)、RS384、RS512,兼容性最好,是当前主流的非对称JWT签名方案 - 椭圆曲线系列:
ES256(SHA-256 + ECDSA签名)、ES384、ES512,签名体积更小、计算性能更高,适合移动端、物联网设备等资源受限的签发场景 - RSA-PSS系列:
PS256、PS384、PS512,使用概率签名填充,抗碰撞能力更强,安全性高于普通RSA系列算法
匹配你的场景的使用逻辑
完全符合你预期的流程:
- 你作为JWT签发方,仅需妥善保管非对称密钥对的私钥,使用私钥对JWT的Header、Payload计算签名,生成完整的JWT下发给客户端
- 所有需要校验JWT的业务服务,仅需提前部署你公开的公钥,就可以独立完成签名有效性校验,全程不需要持有私钥,也没有私自签发有效JWT的能力
实践注意事项
- 签发JWT时必须在Header的
alg字段明确指定使用的非对称签名算法,校验端要强制校验alg字段和预期一致,避免攻击者篡改alg为对称算法导致的校验绕过漏洞 - 公钥要建立定期轮换机制,尽量不要使用小于2048位的RSA密钥、小于256位的椭圆曲线密钥
内容的提问来源于stack exchange,提问作者Fritz Huber
相关产品推荐
相关产品推荐

