ios - AWS/Apple Push certificate -- 错误设置私钥

标签 ios amazon-web-services apple-push-notifications ssl-certificate x509certificate

我正在尝试关注 these设置我的 S3 API 以将推送通知发送到我的 iOS 应用程序的说明。

我把证书问题搞得一团糟,所以我希望有人能帮我解决这些问题。

到目前为止,我已经创建了一个 CSR,将其上传到 Apple Dev 门户,并下载了一个 .cer 文件。然后我将 cer 转换为 pem

openssl x509 -in apns-dev.cer -inform DER -out apns-dev.pem

然后我遇到了“打开钥匙串(keychain)访问,选择 key ,然后突出显示您的应用私钥”的说明。不知道我的“应用程序私钥”是什么,我尝试了几件事:

  1. 获取应用程序证书文件夹中预先存在的私钥文件(据我所知,不是的 RSA 私钥用于生成上述 CSR)。
  2. 将我的默认系统私钥导出为 p12,然后根据 AWS 说明将其转换为 pem key 。
  3. 尝试在钥匙串(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:

我查看了以下问题,但无法使用他们的答案来解决这个问题:

知道会发生什么吗?我只是在黑暗中拍摄。

最佳答案

不要使用 Apple 的说明来生成 CSR。

  1. 生成 key :

    openssl genrsa -out $app.key 2048
    
  2. 生成 CSR:

    openssl req -new -key $app.key -out $app.csr
    

    并输入相关数据。

  3. 将 CSR 上传到 Apple。下载证书。

  4. 将证书转换为 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/

相关文章:

ios - 将 url 存储在 userdefaults 中

amazon-web-services - 解压后的大小必须小于 262144000 字节 aws-iot-device-sdk-v2

python - 使用JQ从CloudFormation.template.json中删除 block

iphone - 远程通知 token 处理

ios - 直接向iOS接收推送通知(未与应用程序链接)

ios - 当收到推送通知和应用程序关闭(不在后台)时增加 iOS 应用程序角标(Badge)

ios - Objective-C - 图像处理 - 修复 Blob 画笔

ios - 为什么 UILabel 上的首行缩进不适用于自定义字体?

amazon-web-services - AWS Cloudformation - 安全组模板错误

ios - 自定义推送通知设计