Firebase:无法上传生产APNs证书

56

我目前正在使用TestFlight测试应用程序,需要生产APNs证书才能在Firebase中测试通知。

我按照此视频中的所有步骤成功配置了开发APNs证书: https://www.youtube.com/watch?v=LBw5tuTvKd4

我也检查了遵循 Firebase 支持指南的步骤。尽管我注意到自从编写该指南以来,Apple开发者网站已略有变化: https://firebase.google.com/docs/cloud-messaging/ios/certs#configure_an_app_id_for_push_notifications

我使用与开发证书相同的方法在developer.apple.com上生成了生产APNs证书,但当我尝试上传.p12文件到Firebase时,它给我以下错误:

“证书环境不匹配。确保您获得了正确的开发或生产APNS证书。”

我肯定上传的是由生产APNS证书生成的.p12文件,还需要做些什么才能获得生产证书吗?


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - jayraj m.g.
8个回答

182

问题已解决。我之前的错误是在 Keychain Access 中导出证书的“私钥”部分而不是“证书”部分。只要我按照列表中正确的行重新导出 .p12 文件 - 就可以正常工作了。

以下图片由iOS提供:

不要选择并创建生产证书的私钥

正确的方法是:

直接选择证书并创建生产证书


13
文档明确指出需要导出密钥。 - Ben Dubuisson
2
@BenDubuisson,我甚至相信我读过你应该将它们一起导出之类的内容。但这个解决了它。非常感谢! - marco
3
在我的情况下,我联系了支持,他们修复了一些问题,然后我就能够上传了。之后我又导出了私钥,这是你应该做的事情... - Ben Dubuisson
4
我也遇到了同样的问题,按照文档所说导出密钥也无法解决错误。但是导出证书并使用证书可以解决问题。所以要么文档有误,要么是发生了某些变化。 - majodi
2
你救了我的一天!我尝试重新创建AppId、证书、配置文件...但都没有起作用。最终,你的修复方法帮助了我! - Jayprakash Dubey
显示剩余8条评论

11

试试这个

创建 .csr 文件并从 developer.apple.com 下载证书。

在导出时同时选择私钥和证书,并使用任何密码导出为 .p12。

将该 .p12 文件上传到 Firebase 控制台。

谢谢


这是正确的答案,建议将其纳入被接受的答案中。谢谢。 - djanowski
至少对于生产证书而言,这种方法对我没有用。我必须排除私钥。 - Mike M
这种情况我也遇到过。但是后来在沙箱和生产环境中都成功了。你可能做了一些不同的事情。我同时使用相同的步骤制作了沙箱和生产环境的.p12文件。 - vaibby

4
请勿在密钥链中选择私钥,直接选择证书并创建生产证书。
1)请勿在密钥链中选择私钥。

enter image description here

2)直接选择证书并创建生产证书

enter image description here


2

我遇到了同样的问题,尝试了上述所有解决方法,但都没有用。最后,我从钥匙串访问中删除了证书,重新下载并安装了证书,然后再次导出并尝试上传。这对我有用。


你从钥匙串中导出私钥为p12格式了吗? - bibscy
是的,我从钥匙串中导出私钥为.p12文件。 - Parvesh chauhan

0
当我尝试了这里提出的解决方案时,什么都没起作用(这可能意味着我做对了)。我通过将长时间运行的应用程序Chrome替换为Safari(我只是为了上传而调用该应用程序)来解决了这个问题。
也就是说,如果重新启动Chrome可能也会起作用。
供参考。

在努力尝试上传证书后,我最终选择了使用Safari进行上传,结果成功了。(请不要修改我的回答,因为修改后的内容与我的经历完全不同。) - Chaohsiung Huang

0

在某些情况下,语义可能会出现问题,因此请注意含义。
当您需要在Firebase控制台上上传证书时,有两个具有占位符文本的框,分别为:
1. 未开发的APNs证书
2. 未生产的APNs证书

在我的情况下,我理解为我不应该在框1中上传开发APNs证书。事实上,Firebase的意思是尚未上传开发Apns证书,我可以上传我的证书。


0
我之前的p12证书已过期,当我试图上传新证书时,出现了“不匹配当前环境”的错误。但是,一旦我使用新的p12更新过期的p12,而不是尝试与过期的证书并存上传新证书,它就成功上传了。

0
在我的情况下,我想上传一个生产证书到 Firebase,尝试了所有的方法后,我终于意识到我在 iOS 开发者中创建了一个开发证书...

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