我的iOS应用需要一个私钥(.p12文件)才能通过Amazon SNS启用推送通知。我在Keychain Access中找不到我的应用程序的私钥。我只为自己和公司看到开发人员和分发密钥。我可以删除它,因为我从Keychain Access中删除了与应用程序相关的两件事,以便使用更新版本。我可能删除了错误的东西。我可以在Xcode中重新生成密钥吗?如果没有,我如何创建一个新的应用程序来获取新密钥?
更新:我发现这个教程详细描述了我要做的事情。 http://www.adventuresofanentrepreneur.net/creating-a-mobile-appsgames-company/setting-up-aws-sns-to-send-push-notifications-to-ios-devices 步骤4.1-4.5是我无法执行的步骤。这是因为我的应用程序在我的钥匙串中只有证书没有密钥。我尝试创建一个全新的应用程序并再次执行该过程,我也没有该应用程序的密钥。
更新2 我发现以下说明让我觉得我的Mac出了问题,因为当我安装从开发人员中心下载的APNs证书时,它不生成密钥。 http://kklolk.blogspot.co.uk/2013/11/amazon-sns-with-apple-apn.html
如果我下载APN证书并将其安装在我的钥匙串上,我会看到钥匙串上的证书而不是钥匙。我的钥匙串上有非APN开发人员和发行版的密钥,但是对于本教程中列出的Apple推送服务器的openssl测试失败了
CONNECTED(00000003)
depth=1 C = US, O = "Entrust, Inc.", OU = www.entrust.net/rpa is incorporated by reference, OU = "(c) 2009 Entrust, Inc.", CN = Entrust Certification Authority - L1C
verify error:num=20:unable to get local issuer certificate
verify return:0
140735234900832:error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate unknown:s3_pkt.c:1256:SSL alert number 46
140735234900832:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
---
我可以在AWS上的Amazon SNS新应用页面中使用我的非APN .p12文件,但是他们会给出错误 - 您输入的凭据无效。 Please enter valid credentials and try again.
我还尝试使用开发人员和分发人员密钥中的密钥组合为应用程序生成的APNs证书,这会产生错误 - There was a transient failure registering the app with Amazon SNS. Please try again (Request ID: Unknown).
问题当然是我的计算机无法正确生成APNs开发和生产证书中的密钥。
答案 0 :(得分:3)
我在这里找到了答案:
Can't find private key for Apple Development Push Services
对我来说,我已经有了证书,但我不知道如何找到它的私钥。如果您点击"我的证书"在类别下,然后会在证书旁边显示一个下拉箭头。点击这个,你应该得到你的私钥。
答案 1 :(得分:2)
我自己也有同样的问题。我发现您需要确保用于从钥匙串访问中生成.p12文件的证书是您使用CertificateSigningRequest文件创建的证书。
我回到Apple开发者会员中心,使用我的CertificateSigningRequest文件创建了另一个用于开发目的的证书。当我下载并在钥匙串访问中打开它时,现在包含了私钥。将该私钥对导出为.p12文件允许我在AWS SNS中成功注册该应用程序。请注意,如果使用开发证书导出私钥,则需要使用APNS沙箱选择在SNS中创建应用程序。如果您使用的是生产证书,则需要使用正常的APNS选择。
答案 2 :(得分:0)
我有一个试探性的答案。在Keychain Access中创建证书时,首先选择iOS Developer或iOS Distribution,然后转到Keychain Access>菜单。证书助理>通过“iOS D ...”申请证书Autority证书。
以上是http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html#verify-cert-private-key-apns
的第1步在我直接进入我注意到的菜单之前,然后说“从证书颁发机构申请证书”。首先选择iOS开发人员密钥会导致他们在导入时成为与证书cer关联的密钥。这让我生成了AWS接受的p12。但是,向iOS设备发送消息仍然无法正常工作,因此尚未取得圆满成功。