验证 App Store 收据

验证 App Store 收据

💡 原文英文,约1800词,阅读约需7分钟。
📝

内容提要

本文介绍了如何使用Python解码Apple的Receipts文件,验证签名、校验证书链,提取payload,以及解析Receipts中的IAP信息,使用Apple的公钥可以验证Receipts文件中的数据是否被篡改。

🎯

关键要点

  • 本文介绍了如何使用Python解码Apple的Receipts文件,验证签名、校验证书链、提取payload,以及解析Receipts中的IAP信息。
  • Apple的Receipts文件采用PKCS #7容器格式,包含签名、证书链和ASN.1编码的payload。
  • iOS 7引入了NSBundle.appStoreReceiptURL,允许开发者直接访问用户的IAP历史记录。
  • 开发者通常将Receipts视为令牌,发送给服务进行验证,而不是实际数据。
  • Receipts文件使用ASN.1编码,Apple通过PKCS#7容器包装实际的收据数据。
  • Apple使用加密签名来确保收据内容的有效性,签名是通过私钥加密的哈希值。
  • 需要使用Apple的公钥来验证签名,确保收据数据未被篡改。
  • Apple使用证书链来验证签名,通常包括Apple根证书、WWDR中间证书和iTunes App Store证书。
  • 提取的收据数据是ASN.1容器,包含多个ReceiptAttribute字段。
  • 通过解析in_app属性,可以提取用户的IAP信息,包括购买日期、产品ID等。
  • 成功解包和验证Apple收据的信息,无需将其发送给Apple进行验证。
➡️

继续阅读