【问题标题】:Unable to upload CSR/Certificates to the Open Banking Directory无法将 CSR/证书上传到开放银行目录
【发布时间】:2019-07-05 15:58:11
【问题描述】:

当我尝试将证书请求作为 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 但没有任何收获。我对任何出现的解决方案都很感兴趣。

感谢您的宝贵时间。

【问题讨论】:

    标签: docker openssl certificate open-banking


    【解决方案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"
    

    【讨论】:

    • 嗨,我目前正面临着与此完全相同的问题...但是 obwac.cnf 和 obseal.cnf 文件的内容应该是什么?
    【解决方案2】:

    根据 BenTaylor 的上述问题,OBWAC 和 OBSEAL 以 QCStatements 的形式在其组成中隐藏了一个宝石,将软件声明断言中指定的角色映射到来自 CSR 的结果证书在其@987654323 中指定的角色@OID。以下是 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 editor 来编辑/删除节点并根据 OBWAC 和 OBSEAL 的要求派生二进制文件。只需敲入二进制文件减去qcStatement=DER: 部分即可。您也可以查看 qcStatement using this web site 的结构。

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

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

    【讨论】:

    • 非常有用的保罗,除了一件事 - 不好玩;
    【解决方案3】:

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

    使用 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
    

    【讨论】:

    • 也看到了同样的问题。完全按照说明进行操作,唯一的区别是较新的 openssl 已经将 OID 2.5.4.97 定义为组织标识符。您是否以某种方式解决了这个问题?
    猜你喜欢
    • 2020-05-04
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2015-05-29
    相关资源
    最近更新 更多