如何将现有私钥用于新的 iOS 开发证书?

Posted

技术标签:

【中文标题】如何将现有私钥用于新的 iOS 开发证书?【英文标题】:How can I use an existing private key to a new iOS development certificate? 【发布时间】:2010-12-29 05:52:41 【问题描述】:

出于美观的原因,我想使用前一段时间用于创建分发证书的相同私钥来创建新的开发证书(我的旧证书已过期)。但是 ios 配置门户上的“如何创建开发证书:”要求您使用 Keychain Access 创建一个新密钥。当我尝试使用“(我的密钥名称)”执行钥匙串访问 > 证书助手 > 向证书颁发机构请求证书时,证书助手实际上并没有创建 CSR 文件。

有谁知道这是否可以做到,如果可以,怎么做?

【问题讨论】:

考虑我下面的回答,它实际上提供了必要的 openssl 命令 @simon...我有 CSR..我现在可以申请相同的证书吗? 【参考方案1】:

首先,我必须将我的私钥从钥匙串中导出为 p12 文件。我尝试编写脚本,但没有成功。

    打开钥匙串并选择您的私钥 右键单击并选择“导出” 使用 p12 文件类型。

运行以下 openssl 命令将受密码保护的 p12 文件转换为 pem。 openssl 会提示输入密码。

openssl pkcs12 -in your-newly-exported-p12-file.p12 -out your-newly-exported-p12-file-as-a-pem.pem -nodes

在您的 pem 文件上运行以下命令以生成 csr。

openssl req -new -key your-newly-exported-p12-file-as-a-pem.pem -out your-csr-to-submit-to-apple.csr

【讨论】:

效果很好。 Openssl 会要求你提供一堆元数据。我提供了我的电子邮件,但没有别的。此外,配置文件在生成新证书后仍显示“过期”。要更新它们,请点击“修改”,下拉“App ID”框并选择已选择的相同内容(漂亮的 Apple 设计),然后点击“保存”。 谢谢...我试图让推送通知在 iPhone 应用程序上运行,一旦我在配置文件中创建证书并下载它,我将它添加到钥匙串访问。然后我选择我刚刚添加的证书和用于创建证书 CSR 的私钥,然后右键单击并单击 Export 2-Items as p12。然后,我使用上面的“openssl pkcs12”行将 p12 转换为可用于发送推送通知的 pem。 谢谢你,真的非常感谢你节省了我的时间 :) 竖起大拇指【参考方案2】:

要从 Keychain Access 中的现有私钥生成 CSR,只需右键单击(两指单击)您要使用的私钥并选择 使用“(我的密钥名称)”向证书颁发机构请求证书

然后输入用户电子邮件地址和 CA 电子邮件地址(我只是为两者使用相同的电子邮件地址),然后选择保存到磁盘。

【讨论】:

我似乎记得在某处读到这不适用于 Apple 配置门户。 我已经尝试了很多次,但它不起作用。但显然它确实适用于某些人。 (注意以防其他人遇到同样令人沮丧的问题) 你应该使用我的答案,乔。 :)【参考方案3】:

您对 OpenSSL 和命令行感到满意吗?邮件列表中有一个discussion,关于手动创建 CSR。 FWIW,我也无法使用 Keychain Access/Certificate Assistant 中的选定密钥创建 CSR。

【讨论】:

谢谢,看起来很棒而且非常简单。下次我需要做 CSR 时我会试试。 考虑我下面的回答,它实际上提供了必要的 openssl 命令。【参考方案4】:

我今天经历了这个地狱。我想通过命令行自动导出密钥以创建 CSR。我发现了一个用c 编写的工具,它承诺了我想要的东西:keychain_access。我编译并使用它,但无法导出我的分发密钥。我使用最新的苹果安全 API 和钥匙串项目属性打印从头开始再次创建该工具,但仍然无法通过标签找到密钥。我能够在没有标签搜索的情况下列出它。在绝望的尝试中,我将钥匙串访问工具重命名为 key,并将其重命名为旧名称。在那之后,我的工具终于按标签拿起了钥匙。并且右键单击REQUEST A CERTIFICATE FROM A CERTIFICATE AUTHORITY WITH "(My Key Name)" 也再次开始工作。似乎该名称以不同的编码或其他方式保存。不是事件苹果自己的钥匙串访问工具能够找到钥匙!

【讨论】:

以上是关于如何将现有私钥用于新的 iOS 开发证书?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过命令行为 iOS 开发安装开发者证书/私钥和配置文件?

如何将私钥添加到分发证书?

hbuilder打包ios需要的私钥和profile文件和私钥证书怎么获得

iOS多人开发中的证书问题

如何获取“开发人员ID应用程序”或“开发人员ID安装程序”证书的私钥?

我可以撤销我所有的 ios 证书并获得新的证书吗? [复制]