我正在尝试按照these说明设置我的S3 API,以便将推送通知发送到我的iOS应用。
我把证书问题搞得一团糟,所以我希望有人可以帮助我解决这些问题。
到目前为止,我已经创建了一个CSR,将其上传到Apple Dev门户,并下载了.cer
文件。然后我将cer
转换为pem
openssl x509 -in apns-dev.cer -inform DER -out apns-dev.pem
然后我遇到了“打开钥匙串访问权限,选择密钥,然后突出显示您的应用程序私钥”的说明。不知道我的“app私钥”是什么,我尝试了几件事:
p12
,然后根据AWS说明将其转换为pem
密钥。 但是,每当我按照说明“测试”私钥/公钥对(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 - 我的私钥文件不为空,我确实输入了密码
知道会发生什么事吗?我只是在黑暗中拍摄。
答案 0 :(得分:1)
请勿使用Apple的说明生成CSR。
生成密钥:
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
中的密钥和$app.pem
中的PEM编码证书。然后,您可以在将要连接到APNS的盒子上安装两者(取决于您使用的软件,它们可能是单独的文件,或者您可以将密钥附加到证书文件中)。