3

当我尝试将证书请求作为 OB 签名证书上传到Open Banking Directory时出现此错误。

错误

当我复制消息时,我收到了这条消息;

错误信息

当我检查网络请求时,它似乎显示一个内部服务器错误(响应 500)并返回 graphql。这是回应:

{"errors":[{"message":"Error: Request failed with status code 400","locations":[{"line":2,"column":3}],"path":["addCertificate"]}],"data":null}

以前有人遇到过这个问题吗?我使用以下命令使用我的凭据生成了带有 Open SSL 的 CSR:

openssl req -new -newkey rsa:2048 -nodes -out [STATEMENT_CLIENT_ID].csr -keyout [STATEMENT_CLIENT_ID].key -subj "/C=GB/ST=/L=/O=OpenBanking/OU=[ORGANISATION_ID]/CN=[STATEMENT_CLIENT_ID]" -sha256

大括号中的标签已编辑。我也尝试过 docker 但没有任何收获。我对任何出现的解决方案都很感兴趣。

感谢您的时间。

4

3 回答 3

3

通过使用相应的配置文件在 OpenSSL 上生成 CSR 解决了这个问题。eiDAS 格式化是必不可少的。

命令:

req -new -config "obseal.cnf" -out "Seal.csr" -keyout "SealPrivateKey.key"

req -new -config "obwac.cnf" -out "WAC.csr" -keyout "WACPrivateKey.key"
于 2019-07-08T13:51:53.707 回答
1

根据上述 BenTaylor 的问题,OBWAC 和 OBSEAL 在其组成中以 QCStatements 的形式隐藏了一个宝石,将软件声明断言中指定的角色映射到来自 CSR 的结果证书在其qcStatementOID 中指定的角色。这是 OBSEAL 的 CNF 示例:

[ req ]
default_bits            = 2048
encrypt_key             = no
default_md              = sha256
default_keyfile         = obseal.key
utf8                    = yes
string_mask             = utf8only
prompt                  = no
distinguished_name      = client_dn
req_extensions          = client_reqext

[ client_dn ]
countryName             = "GB"
organizationName        = "Typical O name"

# Subject common name
commonName              = "<Open Banking Directory Org ID>"

[ client_reqext ]
keyUsage                = critical,digitalSignature,nonRepudiation

subjectKeyIdentifier    = hash

qcStatements=DER:30713013060604008e4601063009060704008e46010602305a06060400819827023050303930110607040081982701020c065053505f504930110607040081982701030c065053505f414930110607040081982701040c065053505f49430c0c4f70656e2042616e6b696e670c0547422d4f42

如果将上述二进制代码粘贴到 ASN1 解码器中,您将看到以下结构:

SEQUENCE (2 elem)
  SEQUENCE (2 elem)
    OBJECT IDENTIFIER 0.4.0.1862.1.6
    SEQUENCE (1 elem)
      OBJECT IDENTIFIER 0.4.0.1862.1.6.2
  SEQUENCE (2 elem)
    OBJECT IDENTIFIER 0.4.0.19495.2
    SEQUENCE (3 elem)
      SEQUENCE (3 elem)
        SEQUENCE (2 elem)
          OBJECT IDENTIFIER 0.4.0.19495.1.2
          UTF8String PSP_PI
        SEQUENCE (2 elem)
          OBJECT IDENTIFIER 0.4.0.19495.1.3
          UTF8String PSP_AI
        SEQUENCE (2 elem)
          OBJECT IDENTIFIER 0.4.0.19495.1.4
          UTF8String PSP_IC
      UTF8String Open Banking
      UTF8String GB-OB

节点PSP_*以如下方式将 OBWAC/OBSEAL 证书映射到软件声明角色:

  • PSP_PI=PISP
  • PSP_AI=AISP
  • PSP_IC=CBPII

您可以使用ASN1 编辑器来编辑/删除节点并根据 OBWAC 和 OBSEAL 的要求派生二进制文件。只需敲入二进制文件减去qcStatement=DER:部分并完成它。您也可以使用此网站查看 qcStatement 的结构。

另一个注意事项是,与 eIDAS QSeal 证书不同,OBSEAL 的最大密钥长度似乎是2048位。

希望有人会发现这很有用,因为英国银行开始丢弃旧的开放银行签名/传输密钥并实施 eIDAS/OBWAC+SEAL。祝你好运,让乐趣开始。o7

于 2020-08-25T13:00:35.630 回答
0

我目前在生产沙箱中遇到了同样的问题,开放银行没有显示任何相关错误。

使用 OpenSSL 版本:OpenSSL 1.1.1g 2020 年 4 月 21 日,然后在此处弹出上传字段。

并按照此pdf 链接获取在上传字段中弹出的文档。

[ req ] 
default_bits = 2048 
encrypt_key = yes 
default_md = sha256 
utf8 = yes 
string_mask = utf8only 
prompt = no 
distinguished_name = client_dn 
req_extensions = client_reqext 

[ client_dn ] 
countryName = "GB" 
organizationName = "My bank Ltd" 
organizationIdentifier = "OBGBR-GB-Unknown1315H25731lXE8ZIEM" 
commonName = "Unknown1315H25731lXE8ZIEM" 

[ client_reqext ] 
keyUsage = critical,digitalSignature,nonRepudiation 
subjectKeyIdentifier = hash 

qcStatements=DER:3081813013060604008e4601063009060704008e46010603306a06060400819827023060303930110607040081982701010c065053505f415330110607040081982701020c065053505f504930110607040081982701030c065053505f41490c1b46696e616e6369616c20436f6e6475637420417574686f726974790c0647422d464341

我可以看到的区别在于组织标识符的定义。在文档中,他们展示了如果使用不支持它但当前版本的 OpenSSl 确实支持它的工具,如何定义它。所以当打印时:

openssl asn1parse -in obwac.csr -inform PEM

pdf中的示例:

66:d=5 hl=2 l= 3 prim: OBJECT :2.5.4.97 
71:d=5 hl=2 l= 34 prim: UTF8STRING :PSDGB-OB-Unknown1315H25731lXE8ZIEM

新版本的 OpenSSL:

   66:d=5  hl=2 l=   3 prim: OBJECT            :organizationIdentifier
   71:d=5  hl=2 l=  34 prim: UTF8STRING        :OBGBR-GB-Unknown1315H25731lXE8ZIEM
于 2021-03-29T09:12:37.350 回答