首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于验证JWT的X.509扩展

用于验证JWT的X.509扩展
EN

Stack Overflow用户
提问于 2018-09-18 19:58:37
回答 2查看 1.8K关注 0票数 4

我想创建一个X.509公钥证书来验证签名,例如。JWT令牌。

我想知道将证书上的哪些属性和扩展属性设置为哪些值,以限制其进行JWT验证。

不幸的是,X.509扩展的规范非常冗长。因此,我也非常感谢对可用的X.509扩展、属性及其含义的简要概述。

EN

回答 2

Stack Overflow用户

发布于 2018-09-18 21:11:02

使用非对称密钥的JWT签名和验证完全使用密钥对,而不是证书。只需要一个公钥就可以验证令牌签名。

公钥可以包含在证书中以便被发送到验证方,但是这并不是真正需要的,并且接收者没有义务执行关于X509证书可能具有的任何属性或扩展的验证。

票数 2
EN

Stack Overflow用户

发布于 2018-09-23 04:44:21

您需要强制实施此类限制的证书扩展类型为...密钥使用和/或扩展密钥使用扩展。对于任何类型的数字签名,您至少需要密钥用法称为...RFC 5280中指定的digitalSignature,。标准(扩展的)密钥使用扩展都在的§4.2.1.3和4.2.1.12中规定。

为了简单起见,您可以始终避免使用证书,方法是在JWT验证器一侧维护一个公钥(或指纹,如果您希望优化内存/磁盘使用)的信任库(静态列表)。但这有一些限制,例如:

  1. 你必须提前知道所有可能用于JWT签名的公钥。情况并不总是这样。(例如,在某些情况下,作为验证者,您想知道的就是密钥属于某个受信任组织的实体,并且它已被允许签名。)
  2. 如果公钥列表太大/变得太大,则很难将密钥更改得太频繁(请记住,密钥应该定期更新),它很难管理。

因此,如果这些限制影响到您,X.509证书提供了一种更具伸缩性和灵活性的解决方案,但当然也有额外的复杂性。对于证书,它是这样工作的:

  • 每个JWT颁发者都有一个由一个或多个证书颁发机构(CA)颁发的证书。
  • JWT验证者应信任这些CA(受信任CA列表),而不是信任每个JWT颁发者的证书specifically.
  • JWT。根据 (X.509证书链),在JWS头的x5c header参数中包括签名者的证书(如果使用子CA,则包括证书链),以便验证者可以将证书(链)链接到其中一个受信任的CA。<代码>H231<代码>F232
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52386106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档