无法将CSR /证书上载到Open Banking Directory

时间:2019-07-05 15:58:11

标签: docker openssl certificate open-banking

当我尝试将证书请求作为OB签名证书上载到开放银行目录时,出现此错误。

Error

复制邮件时,会收到此邮件;

Error message

当我检查网络请求时,似乎显示内部服务器错误(响应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但没有收获。我很想办法解决任何问题。

谢谢您的时间。

3 个答案:

答案 0 :(得分:1)

通过使用相应的配置文件在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"

答案 1 :(得分:0)

按照上述BenTaylor的问题,OBWAC和OBSEAL的QCStatements形式在其构成中具有隐藏的宝石,这些特征将软件声明声明中指定的角色映射到CSR生成的证书在其{{ 1}} OID。这是OBSEAL的CNF的示例:

qcStatement

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

[ 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

节点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 通过以下方式将OBWAC / OBSEAL证书映射到软件声明角色:

  • PSP_* = PSP_PI
  • PISP = PSP_AI
  • AISP = PSP_IC

您可以使用ASN1 editor编辑/删除节点,并根据OBWAC和OBSEAL的要求导出二进制文件。只需将二进制数减去CBPII部分,然后进行处理即可。您也可以查看qcStatement using this web site的结构。

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

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

答案 2 :(得分:0)

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

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

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

[ 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