我想创建一个X.509公钥证书来验证签名,例如。JWT令牌。
我想知道将证书上的哪些属性和扩展属性设置为哪些值,以限制其进行JWT验证。
不幸的是,X.509扩展的规范非常冗长。因此,我也非常感谢对可用的X.509扩展、属性及其含义的简要概述。
发布于 2018-09-18 21:11:02
使用非对称密钥的JWT签名和验证完全使用密钥对,而不是证书。只需要一个公钥就可以验证令牌签名。
公钥可以包含在证书中以便被发送到验证方,但是这并不是真正需要的,并且接收者没有义务执行关于X509证书可能具有的任何属性或扩展的验证。
发布于 2018-09-23 04:44:21
您需要强制实施此类限制的证书扩展类型为...密钥使用和/或扩展密钥使用扩展。对于任何类型的数字签名,您至少需要密钥用法称为...RFC 5280中指定的digitalSignature,。标准(扩展的)密钥使用扩展都在的§4.2.1.3和4.2.1.12中规定。
为了简单起见,您可以始终避免使用证书,方法是在JWT验证器一侧维护一个公钥(或指纹,如果您希望优化内存/磁盘使用)的信任库(静态列表)。但这有一些限制,例如:
因此,如果这些限制影响到您,X.509证书提供了一种更具伸缩性和灵活性的解决方案,但当然也有额外的复杂性。对于证书,它是这样工作的:
x5c header参数中包括签名者的证书(如果使用子CA,则包括证书链),以便验证者可以将证书(链)链接到其中一个受信任的CA。<代码>H231<代码>F232https://stackoverflow.com/questions/52386106
复制相似问题