无法生成 Apple Passbook 签名

Posted

技术标签:

【中文标题】无法生成 Apple Passbook 签名【英文标题】:Cannot generate Apple Passbook signature 【发布时间】:2012-09-20 22:23:10 【问题描述】:

我正在编写一个 shell 脚本,使用 p12 证书从 manifest.json 自动生成 Apple Passbook 签名文件。这是我的工作:

openssl pkcs12 -passin pass:"mypass" -in "mycert.p12" -clcerts -nokeys -out certificate.pem
openssl pkcs12 -passin pass:"mypass" -in "mycert.p12" -nocerts -out key.pem
openssl smime  -passin pass:"mypass" -binary -sign -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER

前两个函数工作正常。至少同时创建了 certificate.pem 和 key.pem。签名文件也被创建,但由于某种原因它是空的(0 字节),虽然 manifest.json 不为空,还有证书和密钥。这怎么会发生,我该如何解决?

【问题讨论】:

在运行这些命令时,您从 openssl 收到什么消息? 我没有收到任何错误消息。只是生成的文件是空的。我已经在下面发布了解决方案。 对我来说,前 2 个命令有效(至少我认为它们有效,因为我得到了 2 个 pem 文件),但第三个命令返回“无法加载证书”。如此混乱。知道它可能是什么吗? :( 【参考方案1】:

我已经解决了这个问题。显然,我还需要 WWDR.pem 证书来执行此操作。它是这样工作的:

openssl pkcs12 -passin pass:"somepass" -in "mycert.p12" -clcerts -nokeys -out certificate.pem
openssl pkcs12 -passin pass:"somepass" -in "mycert.p12" -nocerts -out key.pem -passout pass:"somepass"
openssl smime -binary -sign -certfile WWDR.pem -signer certificate.pem -inkey key.pem -in manifest.json -out signature -outform DER -passin pass:"somepass"

【讨论】:

以上是关于无法生成 Apple Passbook 签名的主要内容,如果未能解决你的问题,请参考以下文章

将超链接添加到 Apple Passbook 首页

PKPass 无法识别 Passbook Web 服务 URL

iOS - PassBook 自动更新

如何可靠地确定Passbook是否可用?

如何使用 PHP 中的推送通知更新 Apple Wallet 通行证

使用 Crashlytics beta 生成没有 Apple ID 的 IPA