首页 > 解决方案 > PSD2 QSealC 签名消息

问题描述

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

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

谢谢

标签: jsonsigningpsd2

解决方案


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

Berlin Group 的 XS2A NextGenPSD2 框架实施指南Stet(法国)都引用了该草案。但是,请注意,每个独特的实现都对 HTTP 消息签名标准施加额外的要求是正常的,例如,要求对特定的标头进行签名或使用特殊格式的 keyId。我不确定开放银行(英国)等其他标准化是否引用它。

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

但是,我强烈建议您在您所在的地区找到一个 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必须格式化为,但请注意,似乎由 ASPSP 来决定如何格式化序列号和颁发者SN={serial},CA={issuer}但是,大多数可能要求序列采用大写十六进制表示和发行者格式,以符合 RFC 2253 或 RFC 4514。

  2. 使用的算法必须是rsa-sha256或者rsa-sha512

  3. 如果请求中存在以下标头,则必须是签名字符串的一部分;date, digest, x-request-id, psu-id, psu-corporate-id,tpp-redirect-uri

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

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

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

验证实际签名很容易,但验证实际 QsealC PSD2 证书有点麻烦,但您可能必须与欧盟的受信任列表列表集成,以检索用于颁发这些证书的根证书和中间证书,并形成信任链与例如 JavacacertsMicrosoft 受信任的根证书程序一起。我个人在实际验证过程中使用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 都非常分散,有几个方面有待解释。

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


推荐阅读