AWS / Apple推送证书 - 错误设置私钥

时间:2016-10-04 20:51:59

标签: 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

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

  1. 抓住应用程序的cert文件夹中的预先存在的私钥文件(根据我的知识,不是的RSA私钥,用于生成上述CSR)。
  2. 将我的默认系统私钥导出为p12,然后根据AWS说明将其转换为pem密钥。
  3. 尝试直接从Keychain Access中的系统私钥生成新的CSR
  4. 但是,每当我按照说明“测试”私钥/公钥对(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:
    

    我查看过以下问题,但未能用他们的答案来解决这个问题:

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

1 个答案:

答案 0 :(得分:1)

请勿使用Apple的说明生成CSR。

  1. 生成密钥:

    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
    
  5. 现在,您拥有$app.key中的密钥和$app.pem中的PEM编码证书。然后,您可以在将要连接到APNS的盒子上安装两者(取决于您使用的软件,它们可能是单独的文件,或者您可以将密钥附加到证书文件中)。