【问题标题】:Exposing the Public Certificate via 'jwks_uri'通过“jwks_uri”公开公共证书
【发布时间】:2016-02-20 06:34:03
【问题描述】:

我想要做的是,使用提供的测试套件运行 OpenID Connect 的一致性测试是链接 [1]

我们目前的要求是通过 jwks.json ('jwks_uri') 公开公共证书。 我们遵循 'Google OAuth2 cert' 的 'jwks_uri'[2] 并设计了以下 jwks.json 文件来公开我们服务器的公共证书。

{
 "keys": [
  {
   "kty": "RSA",
   "alg": "RS256",
   "use": "sig",
   "n": "94A7FA15D6F59CF3F4E4412880BD3A2EB0CCCE3386AC0768A5B6BD902A8CE78B969516EF35F0CA4E2D922BF0B3274F35A5949BEF680E510007696C409BFB8F058DB05ED21B1E51D3791E9C2F9C7FC35BC65C706BE4E7723A3ABABB84B0AFD591EDB8E0A8920873FC04EB8723EAF9092D31F5E7452E07ACA1894F3C5A09C53B39",
   "e": "65537"
  }
 ]
}

为了获得公钥的模数和指数值,我遵循了帖子 [3]。

完成所有这些后,在运行测试套件时,签名验证失败。我觉得我们设置的“n”和“e”值不是正确的编码/加密。目前,它们以十六进制形式输入。但这不是 google cert [2] 中的格式。

你知道吗,

  1. 如何获取公钥的模数和指数值,在 格式正确吗?
  2. 我们需要在 'jwks_uri' 中设置的模数和指数值的格式是什么?

[1]http://openid.net/certification/testing/ [2]https://www.googleapis.com/oauth2/v2/certs [3]RSA: Get exponent and modulus given a public key

【问题讨论】:

  • n 显然是十六进制,但 e 几乎肯定是十进制。

标签: openssl rsa public-key


【解决方案1】:

有一个节点库会为你创建这个:https://github.com/dannycoates/pem-jwk

如果你有你的公钥,那么你可以运行:

pem-jwk public.pem > public.jwk

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 2018-03-01
    • 2013-03-18
    • 2017-01-25
    • 2020-11-09
    • 2010-09-25
    • 1970-01-01
    • 2018-08-15
    相关资源
    最近更新 更多