如何使用现有的私钥创建新的iOS开发证书?

25
出于美观的原因,我想使用之前用来创建分发证书的同一私钥来创建新的开发证书(旧证书已过期)。但是,在iOS provisioning portal上,“如何创建开发证书”要求您使用Keychain Access创建新密钥。当我尝试使用Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority With "(我的密钥名称)"时,证书助手实际上并没有创建CSR文件。

有人知道是否可以这样做,如果可以,怎么做呢?

请考虑我的下面的答案,它提供了必要的openssl命令。 - Heath Borders
@simon...我手头有CSR了..现在我可以用它来请求证书吗? - Saty
4个回答

54

首先,我需要将我的私钥从钥匙串导出为p12文件。 我尝试过脚本但没有成功。

  1. 打开钥匙串并选择您的私钥
  2. 右键单击并选择“导出”
  3. 使用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

1
非常好用。Openssl 会要求您提供一些元数据。我只提供了我的电子邮件,没有其他信息。此外,在生成新证书后,配置文件仍然显示“已过期”。要更新它们,请单击“修改”,下拉“应用程序 ID”框并选择已经选定的相同内容(苹果设计得很好),然后单击“保存”。 - DougW
谢谢...我一直在尝试让iPhone应用程序的推送通知工作,一旦我在Provisioning Profile中创建了证书并下载了它,我将其添加到了Keychain Access中。然后我选择刚刚添加的证书和用于创建证书CSR的私钥,然后右键单击并点击Export 2-Items as p12。然后我使用上面的"openssl pkcs12"命令将p12转换为可用于发送推送通知的pem格式。 - jsherk
谢谢您,真的非常感谢您,您节省了我的时间 :) 点赞 - Waqas Haider Sheikh

4
从钥匙串访问中现有的私钥生成CSR,只需右键单击(两指点击)要使用的私钥,然后选择“使用“(我的密钥名称)”向证书颁发机构请求证书”。
然后输入用户电子邮件地址和CA电子邮件地址(我只是同时使用相同的电子邮件地址),然后选择保存到磁盘。

我记得在某个地方读到过,这在苹果的预配门户网站上不起作用。 - Simon Woodside
我已经尝试了很多次,但它并不起作用。但显然对一些人来说是有效的。(注意,以防其他人遇到同样令人沮丧的问题) - sandstrom
你应该使用我的答案,乔。 :) - Heath Borders

2
你是否熟悉OpenSSL和命令行?有一封邮件列表中的讨论关于如何手动创建CSR。顺便说一下,我也无法在Keychain Access/Certificate Assistant中使用已选密钥创建CSR。

谢谢,看起来很棒也很简单。下次需要制作CSR时我会试一试。 - Simon Woodside
请考虑下面的答案,它提供了必要的openssl命令。 - Heath Borders

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

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