我目前正在尝试计算safari推送通知所需的签名。这一直有效,直到苹果改变了签署规则:
重要提示:2016年2月14日之后,您需要使用网络推送证书和中间证书签署推送包>。附加的createPushPackage.php>伴随文件中的>更新的create_signature函数处理两个证书。
我一直在使用BouncyCastle库来使用CMSSignedDataGenerator来实现它。这适用于.p12网络推送通知证书。现在我有AppleWWDRCA.pem中间证书(从AppleWWDRCA.cer转换而来),我一直在尝试将证书添加到现有的签名数据生成器中:
CMSSignedDataGenerator generator = new CMSSignedDataGenerator();
使用:
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate appleCert = (X509Certificate)cf.generateCertificate(servletContext.getResourceAsStream("/WEB-INF/AppleWWDRCA.pem"));
JcaCertStore jcaCertStoreApple = new JcaCertStore(Collections.singleton(appleCert));
generator.addCertificates(jcaCertStoreApple);
为什么这仍然给我"推送包的签名验证失败。"错误消息?