我正在尝试创建一个通行证签名服务器,以使用 OpenSSL 和 Apple 提供的标准通行证模板动态创建 Apple Wallet 通行证,但我似乎无法使用以下教程显示通行证:
-https://www.raywenderlich.com/2855-beginning-passbook-in-ios-6-part-1-2
不幸的是,当我尝试将密码导入设备模拟器时,我似乎没有收到任何表明问题出在哪里的错误消息...但我确实查看了苹果的文档,我认为这可能与签名过程有关,因为(过时的)教程没有提到任何有关 PKCS #7 分离签名的内容: Apple 钱包文档
我的问题是:我需要对教程的 OpenSSL 命令进行哪些调整才能使用正确的证书成功签署通行证?我已经阅读了 OpenSSL 的文档,但我对这个过程还很陌生,所以我不确定该怎么做。此外,如果有人有关于学习有关证书/签名/等的更多信息的优质资源,我将不胜感激!
答案1
这是一个延迟的回复,但我今天遇到了类似的问题,同时也使用了相同的指南:
在 iOS 6 中开始使用 Passbook:第 1/2 部分。
事实证明,尽管它很旧,但仍然有效。
以下信息或许能有所帮助:
1)你不需要 iOS 模拟器来打开文件.pkpass
(如建议的Apple 文档),您也可以在 Mac 上打开它们。更棒的是,在 Mac 上,如果无法打开,您会收到一条错误消息,而在 iOS 模拟器上,它只会静默失败。
Console.app
2)在 Mac 上打开时可以看到这些错误。尝试.pkpass
在 Mac 和 iOS 模拟器上打开无效,两者都有日志条目Console.app
,这可能会给你更多提示。(如果其他日志的噪音太多,请尝试pass
在右上角进行过滤。)
3) 我最终发现我的问题在于我修改了示例,只是使用空密码来生成passkey.pem
,而openssl
没有将密钥输出到文件中。请注意最后的passkey.pem
空:-passout pass:
openssl pkcs12 -in Certificates.p12 -nocerts -out passkey.pem -passin pass: -passout pass:
这当然是我遇到的问题,你的问题可能有所不同。签名过程很棘手,一切都需要恰到好处,更改任何文件中的一个小字符会导致整个签名无效,从而使传递无效。你应该能够在 Console.app 中的日志文件中获得更多有关你的设置的线索。
为了更直接地澄清和回答您的问题,我认为您不需要调整示例中的任何内容。逐字逐句地执行它,它仍然会生成一个有效的.pkpass
文件。尝试使用上面描述的方法找出您出错的地方:即证书是否无效,或者签名是否与数据不匹配。错误日志中应该有一些线索。