找不到 Apple 开发推送服务的私钥

Posted

技术标签:

【中文标题】找不到 Apple 开发推送服务的私钥【英文标题】:Can't find private key for Apple Development Push Services 【发布时间】:2013-01-14 20:55:25 【问题描述】:

我已经咨询了许多来源,但仍然无法弄清楚。

http://code.google.com/p/apns-php/wiki/CertificateCreation

基本上,在我从 ios 配置门户 > 应用程序 IDS 下载开发推送 SSL 证书(已选择启用 Apple 推送通知服务)并双击证书(文件名 aps_development.cer)将其打开后,钥匙串将打开。然后我在左侧面板上选择“登录”和“证书”。在右侧面板上,我看到“Apple Development IOS Push Services:...”,到目前为止我咨询过的所有说明都告诉我通过单击名称旁边的箭头来“扩展”此选项以显示私钥,但是此证书没有扩展选项。谁能帮我找到这个私钥?我是不是下载错了证书?

谢谢

【问题讨论】:

【参考方案1】:

我的问题是,由于某些原因,各种证书被添加到“系统”钥匙串而不是“登录”钥匙串中。

通过选择“登录”,然后使用小“+”(在 i 旁边)添加它们,它们已被添加到正确的位置。

【讨论】:

我只是将图标从系统钥匙串拖到登录项来解决同样的问题。太简单了! 为我完成了这项工作。对于一些找不到“+”键的人(比如我),它位于左下角。【参考方案2】:

我注意到,当点击左侧菜单(钥匙串)中的“我的证书”时,展开图标实际上是可见的。

【讨论】:

这实际上是疯狂的用户体验。【参考方案3】:

我在创建 CSR 文件时所面临的问题是,我将 Common Name 与空格放在了一起。并且此 CSR 文件创建的证书未在 Keychain Access 中显示 expand 箭头

在我用一个简短的通用名称创建一个新的 CDR 文件并重新创建证书后,它安装得很好并且有一个私钥。

【讨论】:

对我来说,这实际上解决了我的问题。谢谢! 这也解决了我的问题 我遇到了同样的问题,但我的通用名称是空的,所以它不起作用。添加名称有帮助! 因为这个问题我熬了一夜。 我想知道这个错误会导致多少工作时间。谢谢 - 这有帮助!【参考方案4】:

在您尝试访问此证书的机器上,您是否拥有用于签署证书签名请求的密钥(基于哪个苹果为您创建了该证书)?

您应该询问创建该证书的人。这可能是您获得私钥的唯一方法。

【讨论】:

当我签署 CSR 时,我得到了一个证书“iPhone Developer:[name]”和一个私钥“iOS Developer:[name]”。这是我应该用于我的 apns-dev-key 的私钥吗? 当我删除现有的 Development Push SSL 证书并使用从 CSR 生成的我自己的证书创建一个新证书时,它起作用了,但是必须有一种方法可以让其他团队成员能够访问他们下载证书时的私钥,对吗? 是的。这样,就是将证书密钥对(或仅密钥)导出(右键单击钥匙串中的证书并导出)给您的团队成员。这样,当您的团队成员双击证书密钥对时,这两个都将加载到钥匙串中 @KenYu 您从哪里获得“您自己的 CSR 生成的证书”?我只能得到一个 CertificateSigningRequest。 您在开发门户中上传 CSR。之后,您可以从门户下载签名证书【参考方案5】:

我遇到了完全相同的问题。双击 .cer 文件将证书放入钥匙串中,但没有显示任何私钥(条目也无法展开)。

我通过以下步骤解决了这个问题:

    退出钥匙串访问。 右键单击 .cer 文件(例如 aps_production.cer) 选择“打开方式 > 钥匙串访问(默认)”

...瞧,现在它与私钥一起显示。这很奇怪,因为它无论如何都打开了钥匙串访问。

【讨论】:

【参考方案6】:

转到钥匙串访问并按照以下步骤操作...

【讨论】:

【参考方案7】:

删除没有私钥的证书。在 Keychain 中打开 Login,然后将文件从 Finder 拖到 Login,您的证书现在就有了一个私钥!

【讨论】:

【参考方案8】:

我的问题是我没有在“证书”下查看,而是在“所有项目”下查看:

【讨论】:

这是正确答案。出于某种原因,“所有项目”不会将这对显示为一对,只显示证书! 这个答案有帮助,其他人都没有(macOS 10.14.5)。 我整个上午都在想为什么我没有得到这个小三角形。谢谢!【参考方案9】:

我只是双击证书。最终帮助我的是将证书拖动到相关部分。

更多细节可以在这个博客中找到:How to Export a Push Notification Certificate in a p12 file?

【讨论】:

顺便说一句,我们真的为每个应用程序生成一对密钥和一个证书吗?我发现它太乱了,我很难找到使用哪个密钥和证书的应用程序。【参考方案10】:

将其留在这里,希望它对有类似症状的人有所帮助 - 当您单击 aps.cer 以使用钥匙串助手打开它时,它会提示您一个对话框以选择要导入证书的钥匙圈。对我来说,除了login 之外,私钥没有出现在任何其他密钥环的可折叠中(即,SystemSystem Roots 等其他密钥似乎只显示证书)。

【讨论】:

天哪,谢谢。为什么会有这样的事情。这不应该是一件事。【参考方案11】:

这个问题的另一个答案......

创建 CSR 后,在实际将其上传到 Apple 网站之前,您可以查看 logins -> keys 下的 Keychain Access 并查看您已经拥有与您在新 CSR 的 CommonName 中输入的名称相同的新公钥和私钥。

因此,当您将 CSR 上传到 Apple,然后下载证书,然后双击证书时,Keychain 访问只是将下载的证书与您的 Keychain Access 列表中已经存在的公钥匹配,并且它附加了私钥。

因此,如果您在完成所有这些操作后仍无法获得私钥,请尝试重新创建您的 CSR。

对我来说奇怪的是,我读到您每次重新创建证书时都可以使用相同的 CSR,但出于某种原因,这对我不起作用。可能是因为我要替换的旧过期证书不再在我的钥匙串访问列表中,因此没有与新生成的证书匹配的公钥/私钥对。

【讨论】:

【参考方案12】:

.cer 文件不包含私钥,只有公钥。因此,所有这些解决方案仅与颁发原始 CSR 的计算机相关,或者与将原始证书的密钥对导入 Keychain 的计算机相关。

如果您无权访问私钥,您将不得不生成一个新证书。但是 - 您不必从 Apple 证书门户中使旧证书无效,因为您可以为同一个应用 ID 使用多个 APNS 证书。

【讨论】:

【参考方案13】:

删除没有私钥的证书。在钥匙串中打开登录

将这两个证书拖入钥匙串

你好。在您的钥匙串中有私钥。

【讨论】:

我认为您不能在钥匙串中导入 CSR...【参考方案14】:

我在这个问题上尝试了各种答案,但没有运气。我认为帮助我的是遵循Add Certificate 页面说明的底部:

所以我双击了AppleWWDRCA 和AppleWWDRCAG3。然后安装生成的证书,“我的证书”部分开始显示带有私钥的证书。

【讨论】:

【参考方案15】:

原因是用于创建此推送证书的 CSR 文件不是来自您的计算机。您可以向创建此证书的人询问私钥。

【讨论】:

以上是关于找不到 Apple 开发推送服务的私钥的主要内容,如果未能解决你的问题,请参考以下文章

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

来自 WebApi 应用程序的 Apple 推送通知

解析服务器:找不到推送类型 android 的发件人

Apple 推送通知仅适用于开发,不适用于生产

取消订阅 Apple 推送通知服务

用于 APSN 的 PHP 推送服务器(Apple)