【发布时间】:2014-03-29 10:07:45
【问题描述】:
我一直在尝试围绕 ECDsaCng、CngKey 和有效的 EC 证书进行签名。该证书由“Symantec Class 3 ECC 256 bit Extended Validation CA”颁发,签名算法为“sha256ECDSA”,签名哈希算法为“sha256”,公钥参数=“ECDSA_P256”,密钥用法=“数字签名( 80)"。
除了 ECDsaCng 之外,我还尝试过将 JwtSecurityTokenHandler 与证书一起使用,但出现“不支持证书算法”异常。使用“标准”2048 位 SSL 证书可以正常工作。
我需要做的是使用 ES256 签署 JWT,到目前为止,这只能通过使用带有 ECDsaCng 的 256 位“随机生成”密钥来工作,所以回答这些问题中的任何一个都会让我很开心:
如何订购可与 JwtSecurityTokenHandler 一起使用以进行 ES256 签名的有效证书?
如何从商店中的证书创建 CngKey? (证书的私钥不可导出。)
有没有其他方法可以使用 ES256 和无法从商店导出的证书私钥进行签名?
非常感谢任何帮助!
最好的问候,
亨里克
【问题讨论】:
-
你有什么运气吗?
-
是和不是。我不得不使用本地生成的私钥/公钥对。我目前的工作理论是,SSL 证书(任何类型)不能用于在 Microsoft Cng 中签名,因为这似乎强制证书不应同时具有“服务器身份验证”和“代码签名”密钥用法。签名证书应仅具有“代码签名”密钥用法。
标签: c# x509certificate signing elliptic-curve jwt