【问题标题】:How to extract public key from a JWKS using openssl library over shell如何通过 shell 使用 openssl 库从 JWKS 中提取公钥
【发布时间】:2021-11-27 23:52:51
【问题描述】:

我从一个端点获取 JWKS,它看起来像这样:

{
  "keys": [
    {
      "kty": "RSA",
      "use": "sig",
      "x5t": "M2maFm3VYlMBOn3GetVWGXkrKrk",
      "kid": "SIGNING_KEY",
      "x5c": "MIIC………(base64 encoded cert)………..tow==",
      "alg": "RS256"
    }
  ]
}

我正在尝试使用 shell 和 openssl 将此 x5c 值转换为公钥 (.pub) 文件

我尝试从上述 json 复制粘贴 x5c 值并通过以下操作添加到 .pem 文件中:

vi certificate.pem
fold -w 64 certificate.pem

然后在certificate.pem文件中添加以下内容

-----BEGIN CERTIFICATE-----
<value>
-----END CERTIFICATE-----

在此之后,我尝试运行以下命令来获取公钥:

openssl x509 -pubkey -inform pem -in certificate.pem -noout &gt; key.pub

但遇到类似这样的编码错误:

unable to load certificate
140735207381436:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
140735207381436:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=X509_CINF
140735207381436:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:751:Field=cert_info, Type=X509
140735207381436:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:pem_oth.c:83:

我搞砸了什么?谢谢

【问题讨论】:

  • 你的步骤对我有用,即使没有折叠内容。也许您的 JWK 设置不正确?例如,x5c 应该是一个数组。你能检查证书的指纹是否匹配x5t

标签: shell openssl rsa x509certificate jwk


【解决方案1】:

做的时候:

vi certificate.pem
fold -w 64 certificate.pem

您忘记使用折叠内容更新文件,例如:

fold -w 64 cert.pem > folded.pem && cat folded.pem > cert.pem && rm folded.pem

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2013-03-10
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多