【问题标题】:PSD2 QSealC signed messagePSD2 QSealC 签名消息
【发布时间】:2019-07-16 16:29:32
【问题描述】:

我到处寻找 QSealC 签名消息的示例,但找不到任何信息。 我需要验证 QsealC 签名的有效负载的签名,并且我需要对响应的有效负载进行签名,但我知道有效负载都在 json 中,

有没有 QSealC 签名有效载荷的示例?

谢谢

【问题讨论】:

    标签: json signing psd2


    【解决方案1】:

    您将按照 IETF 的 draft-cavage-http-signatures 详细说明进行签名和验证,其中您应特别注意用于构造的部分 4.1.1 和用于验证 Signature 标头的部分 2.5

    Berlin Group's XS2A NextGenPSD2 Framework Implementation GuidelinesStet(法国)都引用了此草稿。但是,请注意,每个独特的实现都对 HTTP 消息签名标准施加额外的要求是正常的,例如通过要求对特定标头进行签名或使用特殊格式的 keyId。我不确定Open Banking(英国)等其他标准化是否引用它。

    请注意,您不需要实际的 QsealC PSD2 证书来开始您的签名或验证过程的实施工作,因为您可以创建自己的自行颁发的证书,例如使用 OpenSSL,通过添加在 ETSI TS 119 495 中描述的 ASN.1 配置文件中找到的 OID。

    但是,我强烈建议您在您所在地区找到一个 QTSP,并订购用于开发和测试的证书,并在时机成熟时用于生产。

    我不会详细介绍创建签名本身的实际过程,因为它在draft-cavage-http-signatures 中非常详细,但请考虑以下示例;

    您正在请求GET https://api.bank.eu/v1/accounts,在处理您的传出请求后,您最终会得到以下签名字符串;

    date: Sun, 12 May 2019 17:03:04 GMT
    x-request-id: 69df69c1-76d0-4590-8f28-50449a21d0d8
    psu-id: 289da2e6-5a01-430d-8075-8f7af71f6d2b
    tpp-redirect-uri: https://httpbin.org/get
    

    生成的Signature 可能看起来像这样;

    keyId=\"SN=D9EA5432EA92D254,CA=CN=Buypass Class 3 CA 3,O=Buypass AS-983163327,C=NO\",
    algorithm=\"rsa-sha256\",
    headers=\"date x-request-id psu-id tpp-redirect-uri\",
    signature=\"base64(rsa-sha256(signing_string))\"
    

    上述签名符合柏林集团在其实施指南(根据 v1.3)第 12.2 节中详述的要求,除了为可读性添加了一些换行符,简而言之是 ;

    1. keyId 必须格式化为 SN={serial},CA={issuer},但请注意,似乎由 ASPSP 来决定如何格式化序列号和颁发者。但是,大多数可能要求序列号采用大写十六进制表示和发行者格式,以符合 RFC 2253 或 RFC 4514。

    2. 使用的算法必须是rsa-sha256rsa-sha512

    3. 以下 headers 必须是签名字符串的一部分(如果存在于请求中); datedigestx-request-idpsu-idpsu-corporate-idtpp-redirect-uri

    4. 签名必须是 base-64 编码

    由于开发人员刚刚开始采用这种签署消息的方式,您可能会自己实现这一点 - 但如果您仔细阅读上述草稿,这并不难。

    但是,供应商已开始支持该计划,例如Apache CXF 目前在其cxf-rt-rs-security-http-signature 模块中支持 v3.3.0 的签名和验证,如Apache CXF 3.3 Migration Guide 中所述。当然,其他人也会效仿。

    验证实际签名很容易,但验证实际 QsealC PSD2 证书有点麻烦,但您可能必须与欧盟的 List of Trusted Lists 集成以检索用于颁发这些证书的根证书和中间证书,并与例如一起形成信任链Java 的 cacertsMicrosoft Trusted Root Certificate Program。我个人在实际验证过程中使用difi-certvalidator (Java) 有很好的经验,因为事实证明它很容易扩展到我们的需求,但肯定还有许多其他好的工具和库。

    您还需要特别注意证书的organizationIdentifier (OID: 2.5.4.97)qcStatements (OID: 1.3.6.1.5.5.7.1.3)。您应该对照Preta 目录检查证书的组织标识符,因为可能存在 TPP 的授权被其 NCA 撤销但 CRL 撤销尚未由其 QTSP 发布的情况。

    免责声明:对于整个 QsealC PSD2 证书签名和验证过程,我发现 Berlin Group 和 EBA 都非常分散,有几个方面有待解释。

    这是一个粗略的解释,但希望它能给您足够的入门知识。

    【讨论】:

    • 谢谢!帮了很大的忙,抱歉我没有早点回复
    • 请求实体必须是公司吗?如果还没有合并,只是想做一个概念验证并在沙箱中尝试一些代码,可以得到通用证书吗?
    • 是的,每个 QTSP 都会在颁发过程中根据其国家 NCA 验证请求实体的授权 - NCA 不能将这些授权给个人。但是,您应该仔细阅读 EBA 的豁免后备指南中的 Guideline 6: Design and testing to satisfaction of PSPs。他们非常明确地指出,即使是正在申请这些所需授权的实体也必须能够测试您的接口。以我的非法律背景,我会争辩说,这为 ASPSP 在其沙箱中支持 QsealC PSD2 测试证书打开了大门。
    • 抱歉,指南 6 在哪个文件中?
    • 它位于Guidelines on the conditions to benefit from an exemption from the contingency mechanism under Article 33(6) of Regulation (EU) 2018/389 (RTS on SCA & CSC) 的第 21 页,由 EBA 于 2018 年 12 月 4 日发布。您可以在 eba.europa.eu/documents/10180/2250578/… 查看文档
    猜你喜欢
    • 2021-01-01
    • 2019-01-13
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    相关资源
    最近更新 更多