💡
原文英文,约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进行验证。
➡️