如何为iOS分发创建P12证书

146
我们有一个iOS应用程序,其推送通知证书已过期,我们正在尝试创建一个新的证书。我在Provisioning门户网站上创建了新的证书(ios_developer.cer、ios_distribution.cer)并下载了它们。我按照Stack Overflow上这里的说明将其转换为PEM格式,然后再转换为P12文件,但我卡住了。当我尝试将PEM转换为P12时,它需要某种私钥,而我不知道在哪里获取它。
我还尝试将它们加载到Keychain Access中。我曾读到你可以从那里导出它们为P12文件,但当我进行导入时,它们不会出现在任何地方。

我在这里找到了一个解决方案,https://www.iosenterpriseaccount.com/how-to-create-p12-certificate-for-ios-distribution - user1329261
10个回答

161

当您在Keychain Access中创建签名请求时,将生成您的私钥。生成和下载证书后,双击它将把它添加到Keychain Access中,与私钥匹配。然后,您可以选择证书,打开箭头以选择私钥,并从Keychain Access一起导出为.p12文件。


14
没事了,我想通了。真难怪人们会遇到麻烦...这太令人困惑了! - RobG
18
很抱歉,但是对我来说p12是灰色的,无法使用。 - Rob
24
@Rob,您需要选择私钥而不是整个证书。在左上角的钥匙串中选择“登录”,然后在类别下方选择“证书”,您会看到您的证书现在有一个下拉箭头,请单击它,然后私钥将显示,右键单击并导出为 .p12 文件。 - tutts
7
我也没有看到下拉选项。我在下载后双击证书,它出现在登录钥匙串中,但不在私钥下面。我只能在"证书"下面看到它,我看不到密钥和证书之间的任何连接。 - setherj
7
我也一样。没有下拉菜单,P12被灰显。 - trainoasis
显示剩余9条评论

126

.p12文件用于在苹果应用商店上发布应用

A. 在您的Mac上创建(.certSigningRequest) CSR文件

  1. 从实用工具中打开Keychain Access
  2. 从Keychain Access工具栏选择 Keychain Access -> Preference
  3. 在弹出窗口中选择证书选项卡
  4. 将“在线证书状态协议”和“证书吊销列表”都设置为“关闭"
  5. 关闭此窗口
  6. 现在从工具栏中打开 Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority
  7. 输入您用于注册iOS开发人员计划的电子邮件地址和通用名称
  8. 将CA Email保持为空白,并选择“Saved to disk”和“Let me specify key pair information”
  9. 点击继续
  10. 在硬盘上选择一个文件名和目标位置
  11. 点击保存
  12. 在下个窗口中,将“密钥大小”值设置为“2048位”
  13. 将算法设置为“RSA”
  14. 点击继续

这将创建并保存您的 certSigningRequest 文件(CSR)到您的硬盘。还会在 Keychain Access 中创建公钥和私钥以及输入的通用名称。

B. 在iOS开发人员帐户中创建“ .cer”文件

  1. 登录苹果开发人员帐户,点击“证书,标识符和配置文件”
  2. 点击“配置文件”
  3. 在“证书”部分点击“生产”
  4. 在主面板右上角点击“添加(+)”
  5. 现在选择“App Store和Ad Hoc”
  6. 点击继续
  • 点击 “选择文件” 并从硬盘中找到你制作的CSR文件
  • 点击 生成
  • 点击 下载 以获取文件
  • C. 安装 .cer 并生成 .p12 证书

    1. 找到你已下载的 .cer 文件并双击打开
    2. 将登录下拉菜单设置为 “登录”并点击添加
    3. 打开 KeyChain Access,你会在步骤A中创建的配置文件中找到它
    4. 你可以展开 “私钥” 配置文件(显示你添加的证书)
    5. 只选择这两个项目(不要选择公钥)
    6. 右键单击并从弹出菜单中选择 “导出2个项目…”
    7. 现在确保文件格式为 “.p12” 并选择硬盘上的文件名和目标位置
    8. 点击保存。现在,你将被提示设置密码,但是将这两个都留空
    9. 点击确定。现在,你在硬盘上有一个.p12文件

    请注意,如果问题仍然存在,则还可以尝试以下步骤:

    如果你的钥匙串存储在iCloud中,则从iCloud中删除所有钥匙串内容并在iCloud中进行新设置,这应该可以解决问题。


    1
    我不小心从ke-chain中删除了我的私钥。因此,我无法在证书下面看到私钥。我有CSR文件,请问如何从CSR安装私钥? - Avijit Nagare
    1
    我作为一个Windows手机用户,曾经花费了很长时间才理解苹果生成.p12文件的过程。但是这篇文章真的帮助了我。 - Mohammed Aamir K
    1
    非常有用的指令。非常感谢。它节省了很多时间。 - Alok C
    为什么要将“在线证书状态协议”和另一个设置为关闭? - Nate
    1
    我解决了这个问题。为了向您解释我所做的:确保您的钥匙串不会出现在iCloud中。一旦它在那里,就有可能出现上述问题。我卸载了所有内容,进行了新的设置,而没有使用我iCloud中的数据,然后它就可以工作了。 - Nazar Medeiros
    显示剩余5条评论

    43

    除非您从钥匙链左下角选择(证书),否则您将无法获得扩展选项。


    40

    好的,问题解决了!当我双击证书时,它自动安装到SYSTEM钥匙串中 - 我不知道为什么。因此,我简单地将证书拖放到LOGIN钥匙串中,然后一切正常。感谢这篇文章->将证书添加到钥匙串并生成.p12文件格式 - alon rosenfeld 10个月前。


    1
    哦,哇。我花了好几个小时才弄明白这个问题。如果不是因为这个答案,我还会浪费另一个星期的时间。 - B Seven
    1
    非常感谢。我浪费了几个小时来尝试解决这个问题。 - SaltedBlowfish
    1
    是的,浪费了好几个小时的时间,终于解决了 :) - Sahan
    1
    仍然适用于2020年。这个答案在两天的“没有iOS签名身份与指定的配置文件匹配”的斗争后,拯救了一台即将被砸到墙上的MacBook。 - Raghu

    12

    获取您的P12文件,请按照以下步骤进行:

    步骤1:XCode 中,进入 项目设置 > 常规 > 签名 部分 > 签名证书

    查看您正在使用的特定应用程序的证书,如下图所示

    enter image description here

    步骤2:打开 Keychain > 在左下角的类别部分 > 证书

    查找该证书并通过单击向下箭头打开子证书,如图所示

    enter image description here

    步骤3:右键单击并通过输入密码(例如“123456”)将其导出为“Certificates.p12”


    1
    我没有那个箭头来展开。 - Nazar Medeiros

    8

    如果有其他人发现 P12 选项被灰色/灰掉了,

    这里附上我 MacBook Pro 最新的截图(2021年)。

    keychain access v11.0


    1
    this step is crucial! - d3vtoolsmith
    1
    这一步骤至关重要! - d3vtoolsmith

    8

    1
    完全救了我。 - Natalia Terlecka
    那就是互联网的用途。 - Dirk Boer

    4

    如果仍然遇到此问题,我的解决方法是不要选择“导出2个项目”(密钥和证书),而只需导出已经包含密钥的证书。截至2016年,我认为这是正确的操作方式,因为先前使用“导出2个项目”的上传方式已经不再起作用。


    我无法将仅证书导出为p12格式 - 您确定这是正确的方法吗? - Steven Matthews
    同样的情况。这非常重要。 - Gautam Jain

    3
    我在尝试使用MS Visual Studio App Center在云端构建iOS应用程序时,没有使用Mac电脑。问题是每个教程都使用上面由Jayprakash Dubey提供的最佳答案。该方法需要使用Mac和KeyChain。解决方案来自SO here
    您需要一个密钥(aps_development.key),然后:
    1. 创建密钥对:openssl genrsa -out aps_development.key 2048
    2. 创建CSR:openssl req -new -sha256 -key aps_development.key -out aps_development.csr
    3. 将CSR上传到开发人员门户以获取证书 aps_development.cer
    4. 转换证书:openssl x509 -inform DER -outform PEM -in aps_development.cer -out aps_development.pem
    5. 构建PKCS#12:openssl pkcs12 -inkey aps_development.key -in aps_development.pem -export -out aps_development.p12
    你可以开始创建应用程序ID和配置文件。这样可以在应用中心中构建应用程序。

    App Center本身确实使用云端的Mac来构建iOS应用程序。App Center Build还期望您的应用程序能够在本地Mac环境中构建。因此,即使它现在可以正常工作,但这种方法是不受支持的,并且可能会出现意想不到的问题。 - user62171
    @MattPil29 你从哪里下载的.key文件? - saquib adil
    我需要使用我的Windows机器生成CSR并将CER转换为P12以供CodeMagic使用,这些说明完美地起到了作用。 - zechariahs

    1
    为了创建用于iOS分发的P12证书,首先您需要从您的Apple开发者账户中创建一个证书。

    cert1

    点击“+”按钮,选择“IOS发布(App Store和Ad Hoc)”,然后点击“继续”。

    cert2

    你将被要求上传一个签名请求证书,该证书必须在你的Mac上创建。

    cert3

    打开“钥匙串访问” => “证书助手” => “向证书颁发机构请求证书”。
    顺便说一下,如果你的“登录”钥匙串中没有该证书(如图所示),你需要在钥匙串中创建它,如果不知道如何添加,请搜索相关方法。

    enter image description here

    输入您的“用户电子邮件地址”和“常用名称”,将“CA电子邮件地址”留空,并勾选“保存到磁盘”,然后点击“继续”并指定保存位置。

    enter image description here

    将您生成的证书上传到您的开发者苹果账户上我们所在的位置,并点击“继续” => “下载”选择您想要下载的位置。

    enter image description here

    双击从开发者苹果账户下载的ios_distribution.cer文件,然后打开钥匙串访问,你会发现你的证书已经添加到你的登录钥匙串中。

    enter image description here

    点击“我的证书”选项卡,然后选择您的证书和私钥,同时导出它们,并选择扩展名为.p12

    enter image description here

    enter image description here

    现在你可以使用你新生成的iOS分发的P12证书进行工作了。

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