从Amazon SNS(APNS Production)收到“EndpointDisabled”

3

我已经成功地使用SNS向苹果设备发送推送通知,在Xcode中使用APNS_SANDBOX。

我们现在准备进入生产环境,但在APNS(生产)应用程序端点上正确设置证书时遇到了极大的困难。

我正在按照开发期间遵循的相同流程进行操作,并且咨询了几个指南。

每次尝试向设备发送推送通知时,我们都会收到以下失败通知:

{"DeliveryAttempts":1,"EndpointArn":"arn:aws:sns:eu-west-1:123456789:endpoint/APNS/Name/e591d1a1-8db3-3382-8091-ab1a3cb3cac5","EventType":"DeliveryFailure","FailureMessage":"Endpoint is disabled","FailureType":"EndpointDisabled","MessageId":"08a70f95-773c-58fb-a6f9-5df1650eeb19","Resource":"arn:aws:sns:eu-west-1:123456789:app/APNS/Name","Service":"SNS","Time":"2017-10-20T15:02:10.824Z"}

我理解这可能涉及几个问题,但很可能是与上传到SNS的证书有关的问题。

我们遵循的过程:

  1. 从Apple Developer网站访问导航到 证书、ID和配置文件 > 标识符 > 应用程序ID

  2. 创建新的应用程序ID并启用推送通知服务。

  3. 单击创建新的生产SSL证书,然后在Mac上的本地密钥链中创建一个新的CSR文件,将其上传到开发者网站(在证书生成过程中),然后下载生成的.cer 文件。

  4. 双击.cer 文件将其添加到Mac上的Keychain中。

  5. 此时,我们参考了http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html文档,建议运行以下命令:

openssl x509 -in myapnsappcert.cer -inform DER -out myapnsappcert.pem

  1. 回到Keychain中,选择Keys,突出显示应用程序的私钥,并将其导出为.p12 文件。

  2. 回到命令提示符中,按照AWS文档运行以下命令:openssl pkcs12 -in myapnsappprivatekey.p12 -out myapnsappprivatekey.pem -nodes -clcerts 以生成另一个.pem 文件。

Amazon接着说:

新创建的.pem文件将用于配置Amazon SNS以发送移动推送通知消息。

这让我认为文档已经过时,因为将.pem文件上传到SNS APNS应用程序凭据管理器会返回错误,指出无法读取该文件。

根据APNS应用程序的SNS凭据管理器,它只接受.p12文件...如果是这样,为什么还需要创建最终的.pem文件?这一步仍然需要吗?我错过了什么步骤吗?

我仍然上传了最终的.p12文件,但显然不起作用。

我知道还有其他类似的问题,但答案都太笼统了,除了反复试验以外,没有真正的解决方案。我认为我的问题特别与生成的证书不正确或者流程中缺少某个步骤有关。

我想向最近完成此任务的任何人寻求帮助,可以澄清涉及的步骤。

谢谢


你有按照步骤验证pem文件吗?openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert myapnsappcert.pem -key myapnsappprivatekey.pem - Michael - sqlbot
@Michael - sqlbot,是的,我试过了,但没有改变任何东西。经过多次尝试和错误,我终于让它工作了。我认为AWS建议的控制台命令都不是必要的。 - Goodbytes
1个回答

4
经过多次尝试,我终于使它工作了。我不确定AWS文档是否已经过时,但它们肯定过于复杂。
以下是步骤:
1.从Apple Developer网站访问证书、ID和配置文件 > 标识符 > 应用程序ID。
2.创建一个新的应用程序ID并启用推送通知服务。
3.单击“创建新的生产SSL证书”,然后在Mac上的本地密钥链中创建一个新的CSR文件,在证书生成过程中上传它到开发者网站,然后下载生成的.cer文件。
4.双击.cer文件将其添加到Mac上的Keychain中。
5.打开Keychain,选择“我的证书”,突出显示第3步中添加的证书,可能以“Apple Push Services”开头。
6.右键单击证书并导出它(扩展名为.p12)。如果它要求您设置密码,可以留空。
7.在AWS SNS中,进入“应用程序”,单击进入您的APNS应用程序(或添加新应用程序)。在“平台应用程序操作”下单击更新凭据并上传导出的.p12文件。
8.最后,单击“从文件加载凭据”并更新以退出应用程序设置。
9.享受您的应用程序中的推送通知。
这对我有用,我不确定为什么AWS文档建议使用转换文件的命令,看起来它们是不必要的,并引起了很大的混乱。
希望这对某人有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接