5

我正在编写一个 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 不为空,还有证书和密钥。这怎么会发生,我该如何解决?

4

1 回答 1

10

我已经解决了这个问题。显然,我还需要 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"
于 2012-10-02T02:05:34.317 回答