【问题标题】:How to test Apple app store notifications in jwt debugger如何在 jwt 调试器中测试 Apple 应用商店通知
【发布时间】:2022-12-22 05:32:04
【问题描述】:

我正在为 Apple 应用商店通知实现服务器到服务器的通信,如此处所述

https://developer.apple.com/documentation/appstoreservernotifications/

我可以接收 JWT 并获取 responseBodyV2 对象。

https://developer.apple.com/documentation/appstoreservernotifications/responsebodyv2

我想在调试器中测试 JWT

https://jwt.io/#debugger-io

我将已签名的有效负载粘贴到调试器的左侧窗口中。调试器解码有效载荷,正确识别算法为 ES256,显示 x5c 证书链和有效载荷数据。在“验证签名”面板中,调试器将证书链中的第一个证书插入到公钥文本框中,并将私钥文本框留空。它还显示消息“签名已验证”。

我有两个问题。

  1. 当我没有从我们的 Apple 帐户输入共享密钥时,调试器如何成功验证签名? (我认为这应该在私钥文本框中输入)。

  2. 我应该使用 x5c 证书链吗?如果是,如何使用?

【问题讨论】:

    标签: ios jwt


    【解决方案1】:

    'x5c' 的 JWS 使用 X509 证书链来建立信任,类似于 Web 浏览器。

    来自RFC 7517 section 4.1.6, "x5c" (X.509 Certificate Chain) Header Parameter

    “x5c”(X.509 证书链)标头参数包含 X.509 公钥证书或证书链 [RFC5280] 对应于用于对 JWS 进行数字签名的密钥。这 证书或证书链表示为 JSON 数组 证书值字符串。数组中的每个字符串都是一个 base64 编码([RFC4648] 的第 4 节——不是 base64url 编码)DER [ITU.X690.2008] PKIX 证书值。证书包含 与用于数字签名的密钥相对应的公钥 JWS 必须是第一个证书。这可能会跟随 附加证书,每个后续证书都是 一个用来证明前一个。收件人必须验证 根据 RFC 5280 [RFC5280] 的证书链并考虑 如果任何验证,则证书或证书链无效 发生故障。此标头参数的使用是可选的。

    (强调已添加。)

    基本上,JWS 是由第一个证书签名的,并且 JWS 的签名必须使用此证书进行验证。然后,每个证书依次由下一个证书签名,建立信任链,最终必须通向您所信任的已知根 CA。整个签名链必须经过验证并以您信任的已知证书终止,以便 JWS 被视为有效。

    您可以在RFC 5280 section 6, Certification Path Validation 中阅读有关证书链验证的更多信息。

    请注意,没有提及 Apple 共享机密。这是因为共享密钥用于调用 Apple 的 verifyReceipt 端点,与 JWS 签名验证无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      相关资源
      最近更新 更多