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

标签 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”。

最佳答案

我也遇到过这样的问题。尝试后,我发现不同的 openssl 版本会导致相同 list 文件的签名大小不同。
最初,我使用的是 openssl 1.0.2, 1.0.3 但没有运气,但是 2015 年 3 月 19 日将我的 openssl 版本降级到 0.9.8zf 后,一切正常 ,而且我的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 

关于safari - 使用 openssl 为 Safari 推送通知手动签署推送包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919024/

相关文章:

Flutter 通知计数然后在读取时隐藏徽章并在推送新通知时显示

CTR-AES256 加密与 OpenSSL -aes-256-ctr 不匹配

selenium-webdriver - 使用 Selenium Grid 时无法与 SafariDriver 建立连接

html - 调整大小后 Safari 13 不应用 CSS

html - 绝对 flex 盒容器中 flex 元素中溢出隐藏元素的高度

android - 当用户卸载应用程序时停止发送 firebase 通知

html - IE 和 Webkit 中奇怪的页脚行为

android - 如何在启动 GCM 程序之前检查用户 google 帐户是否已添加到设备上?

delphi - idhttp:特定站点上的 SSLv3_READ_BYTES 错误

mongodb - mongod : error while loading shared libraries: libssl. so.10 libcrypto.so.10