我正在尝试关注 these设置我的 S3 API 以将推送通知发送到我的 iOS 应用程序的说明。
我把证书问题搞得一团糟,所以我希望有人能帮我解决这些问题。
到目前为止,我已经创建了一个 CSR,将其上传到 Apple Dev 门户,并下载了一个 .cer
文件。然后我将 cer
转换为 pem
openssl x509 -in apns-dev.cer -inform DER -out apns-dev.pem
然后我遇到了“打开钥匙串(keychain)访问,选择 key ,然后突出显示您的应用私钥”的说明。不知道我的“应用程序私钥”是什么,我尝试了几件事:
- 获取应用程序证书文件夹中预先存在的私钥文件(据我所知,不是的 RSA 私钥用于生成上述 CSR)。
- 将我的默认系统私钥导出为
p12
,然后根据 AWS 说明将其转换为pem
key 。 - 尝试在钥匙串(keychain)访问中直接从我的系统私钥生成新的 CSR
但是,每当我按照说明“测试”私钥/公钥对时(openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev.pem -key apns- private.pem
),我明白了:
error setting private key
41047:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59.60.1/src/crypto/x509/x509_cmp.c:406:
我查看了以下问题,但无法使用他们的答案来解决这个问题:
Does the apple push notification distribution certificate signing request need to be the same as that used for the distribution cert to sign the app? - 当我尝试“扩展”Keychain Access 中的证书时,我看到的只是信息。没有私钥信息,无法“导出2项”
Apple Push Notification error setting private key (这里的自答和上面的有冲突,反正我已经没有原来的CSR了)
Unable to load client certificate private key file - 我的私钥文件不为空,我确实输入了正确的密码
知道会发生什么吗?我只是在黑暗中拍摄。
最佳答案
不要使用 Apple 的说明来生成 CSR。
生成 key :
openssl genrsa -out $app.key 2048
生成 CSR:
openssl req -new -key $app.key -out $app.csr
并输入相关数据。
将 CSR 上传到 Apple。下载证书。
将证书转换为 PEM:
openssl x509 -inform DER -in $app.cer -out $app.pem
现在您在 $app.key
中有了 key ,在 $app.pem
中有了 PEM 编码的证书。然后,您可以将两者都安装在将连接到 APNS 的盒子上(根据您使用的软件,它们可能是单独的文件,或者您可以将 key 附加到证书文件)。
关于ios - AWS/Apple Push certificate -- 错误设置私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39861540/