PSD2 QSealC подписанное сообщение
Я везде искал пример подписанного сообщения QSealC и не смог найти никакой информации. Мне нужно проверить подпись полезной нагрузки со знаком QsealC И мне нужно подписать ответную полезную нагрузку, но я понимаю, что полезная нагрузка вся в json,
Есть ли примеры подписанных полезных нагрузок QSealC?
Спасибо
0 ответов
Вы будете выполнять как подписание, так и проверку, как подробно описано в документе IETF https://datatracker.ietf.org/doc/draft-cavage-http-signatures/, где вам следует обратить особое внимание на раздел4.1.1
для строительства и раздела 2.5
для проверки Signature
заголовок.
На этот проект ссылаются как Руководство по внедрению инфраструктуры XS2A NextGenPSD2 Берлинской группы, так и Stet (Франция). Однако обратите внимание, что это нормально, что каждая уникальная реализация предъявляет дополнительные требования к стандарту подписи сообщений HTTP, например, требуя подписи определенных заголовков или используя специально отформатированный keyId. Я не уверен, ссылаются ли на это другие стандарты, такие как Open Banking (Великобритания).
Обратите внимание, что вам не нужны настоящие сертификаты QsealC PSD2, чтобы начать работу по реализации процесса подписи или проверки, так как вы можете создавать свои собственные самостоятельно выданные сертификаты, например, используя OpenSSL, добавляя OID, найденные в ASN.1 профиль, описанный в ETSI TS 119 495.
Однако я настоятельно рекомендую вам найти QTSP в вашем регионе и заказать сертификаты как для разработки, так и для тестирования, а также для использования в производственной среде, когда придет время.
Я не буду вдаваться в подробности фактического процесса создания самой подписи, поскольку он очень хорошо описан в https://datatracker.ietf.org/doc/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))\"
Вышеупомянутая подпись соответствует требованиям Берлинской группы, как подробно описано в разделе 12.2 в их руководящих принципах реализации (per. V1.3), за исключением некоторых разрывов строк, добавленных для удобства чтения, а именно:
KeyId должен быть отформатирован
SN={serial},CA={issuer}
, но обратите внимание, что, похоже, ASPSP решает, как форматировать серийный номер и эмитент. Однако, скорее всего, потребуется, чтобы серийный номер был в шестнадцатеричном представлении в верхнем регистре и был отформатирован издателем в соответствии с RFC 2253 или RFC 4514.Используемый алгоритм должен быть либо
rsa-sha256
илиrsa-sha512
Следующие заголовки должны быть частью строки подписи, если они присутствуют в запросе;
date
,digest
,x-request-id
,psu-id
,psu-corporate-id
,tpp-redirect-uri
Подпись должна быть основанием 64 закодирован
Поскольку разработчики только начали применять этот способ подписания сообщений, вы, вероятно, попросите реализовать его самостоятельно, но это не так уж сложно, если вы просто внимательно прочитаете вышеупомянутый черновик.
Однако поставщики начали поддерживать эту схему, например, Apache CXF в настоящее время поддерживает как подписание, так и проверку из v3.3.0 в своих cxf-rt-rs-security-http-signature
модуль, как указано в Руководстве по миграции Apache CXF 3.3. Конечно, последуют и другие.
Проверить подлинность подписи достаточно просто, но проверка фактического сертификата QsealC PSD2 немного сложнее, но вам, вероятно, придется интегрироваться со Списком доверенных лиц ЕС, чтобы получить корневые и промежуточные сертификаты, используемые для выдачи этих сертификатов, и сформировать цепочка доверия вместе, например, с Javacacerts
и Программа доверенных корневых сертификатов Microsoft. Лично у меня есть хороший опыт использования https://github.com/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, я считаю, что и Берлинская группа, и EBA очень расплывчаты, оставляя некоторые аспекты открытыми для интерпретации.
Это грубое объяснение, но, надеюсь, оно даст вам достаточно для начала.