You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成满足IRS电子服务系统要求的自签名RSA类型JWK密钥

生成符合IRS要求的RSA类型JWK操作步骤

IRS系统默认不接受自签名证书作为JWK的绑定证书,这是你使用自签名方式生成时报错的核心原因。如果是开发测试阶段可先按以下流程生成临时版本,生产环境必须替换为IRS认可的CA签发的正式证书。

第一步:生成RSA密钥对和证书文件

使用openssl工具执行以下命令:

  1. 生成2048位RSA私钥:
    openssl genrsa -out irs-private-key.pem 2048
  2. 生成证书签名请求(CSR):
    openssl req -new -key irs-private-key.pem -out irs-csr.pem
  3. 测试环境生成临时自签名证书:
    openssl x509 -req -days 365 -in irs-csr.pem -signkey irs-private-key.pem -out irs-certificate.pem
    生产环境需将生成的CSR提交给IRS信任的CA机构,获取正式签发的PEM格式证书。

第二步:提取各必填字段值

  • kty:固定填写字符串"RSA"
  • use:固定填写"sig",IRS要求该字段标识密钥为签名用途
  • n:RSA公钥模数,需转换为Base64URL编码格式
  • e:RSA公钥指数,需转换为Base64URL编码格式,通用默认值为AQAB(对应十进制65537)
  • x5t:证书的SHA-1指纹,转换为Base64URL编码格式,可通过以下命令直接计算:
    openssl x509 -in irs-certificate.pem -fingerprint -sha1 -noout | sed 's/://g' | xxd -r -p | base64 | tr '+/' '-_' | tr -d '='
  • x5c:证书链的普通Base64编码数组,单证书场景下只需填写证书PEM内容去除头尾-----BEGIN CERTIFICATE-----、-----END CERTIFICATE-----标识和所有换行后的字符串
  • kid:自定义的密钥唯一标识,保证同个JWK集合内无重复即可,建议使用证书SHA-256指纹的前16位字符

第三步:组装为标准JWK格式

参考结构如下:

{
  "kty": "RSA",
  "use": "sig",
  "kid": "自定义的唯一密钥ID",
  "n": "Base64URL编码的RSA公钥模数",
  "e": "AQAB",
  "x5t": "Base64URL编码的证书SHA-1指纹",
  "x5c": [
    "证书的普通Base64编码内容"
  ]
}

本地校验方法

可使用jose类库做本地格式校验,Python示例代码:

from jose import jwk
with open('irs-certificate.pem', 'r') as f:
    cert_content = f.read()
public_jwk = jwk.construct(cert_content, algorithm='RS256').to_dict()
# 手动补全kid、use字段即可得到符合格式要求的JWK

注意:自签名证书仅可用于本地开发调试,提交到IRS生产接口时必须替换为IRS信任CA签发的正式证书,否则仍会返回校验错误。

内容的提问来源于stack exchange,提问作者Robert Tinghitella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:06:03