【发布时间】:2019-03-13 22:30:42
【问题描述】:
我们正在通过 RESTful API 与 Google 进行集成,我需要使用 RSA-SHA256 对 JWT 的有效负载进行签名,而我所拥有的只是一个字符串形式的私钥,看起来像
-----BEGIN PRIVATE KEY-----
MIIEvgIBfADANBg9qhkdsiG9w0BAQEFAASCBKgw
......
-----END PRIVATE KEY-----
我一直在到处寻找解决方案,但每个人都在谈论X509Certificate2,它需要一个 p12 文件或一些证书。现在我一个都没有,我只有一个字符串就是私钥。
Google 推荐使用https://jwt.io/,它可以与密钥字符串一起使用,但是,我需要我的 CODE 才能做到这一点。页面中列出了 3 个库:
- 其中一个属于 Microsoft,完全没有文档。
- 另一个使用
X509Certificate2或专门用于字符串键,只有一个链接到这个地方 http://www.donaldsbaconbytes.com/2016/08/create-jwt-with-a-private-rsa-key/,它使用了一些我没有的证书文件,因此它是一个错误且无用的链接。 - #2 的同一创建者有另一个库,但它是用于手机的,它实际上有一个 RSA256 签名方法,它将私钥作为我的格式的字符串。
所以我的问题是 - 我的情况有一些可行的解决方案吗?因为我不敢相信没有其他人与 Google 集成。
【问题讨论】:
-
密钥到底有多长?还有更多关于
....的内容吗? -
你可以用 Convert.FromBase64String 把它变成字节,然后看看 X509 类是否喜欢它作为 rawData。
-
bommelding,整个键(带有“-----BEGIN PRIVATE KEY----”和结尾)是 1676 个字符长
-
这将是大约 1k 字节,足够长的证书。现在找出它是什么格式。在 Visual Studio 中检查字节可能是一个快速入门。
-
@bommelding:几乎可以肯定它是 PKCS8 私钥,而不是证书。