使用openssl为Safari推送通知手动签署推送包

时间:2013-11-12 01:02:30

标签: safari notifications openssl push-notification apple-push-notifications

文档说The signature is a PKCS #7 detached signature of the manifest file但是如何用openssl做到这一点?

对于Passbook,我找到了这些命令:

openssl pkcs12 -passin pass:test -in ./Certificates.p12 -clcerts -nokeys -out ./certificate.pem
openssl pkcs12 -passin pass:test -in ./Certificates.p12 -nocerts -out ./key.pem
openssl smime -passin pass:test -binary -sign -signer ./certificate.pem -inkey ./key.pem -in ./pushPackage.raw/manifest.json -out ./pushPackage.raw/signature xs-outform DER

还尝试使用WWDR证书:

openssl smime -passin pass:test -binary -sign -certfile ~/Downloads/AppleWWDRCA.cer -signer ./certificate.pem -inkey ./key.pem -in ./pushPackage.raw/manifest.json -out ./pushPackage.raw/signature xs-outform DER

并将其拉上:

zip -r ../example.zip . -x '*.DS_Store'

但我仍然得到“Signature verification of push package failed”。

1 个答案:

答案 0 :(得分:0)

我也遇到过这样的问题。在尝试之后,我发现不同的openssl版本将导致相同清单文件的不同签名大小。 最初,我使用的是openssl 1.0.2,1.0.3但没有运气,但在我将openssl版本降级到0.9.8zf 2015年3月19日后,一切正常,我的safari可以识别推送包(我的safari版本是8.0.7(10600.7.12),MAC OS:10.10.4(14E46))

我的openssl命令是:

openssl smime -sign -in manifest.json -out signature -signer push.pem -certfile AppleWWDRCA.pem -binary -inkey push.key -outform der