如何为 iOS 分发创建 P12 证书

Posted

技术标签:

【中文标题】如何为 iOS 分发创建 P12 证书【英文标题】:How to create P12 certificate for iOS distribution 【发布时间】:2012-03-14 04:32:59 【问题描述】:

我们有一个 ios 应用,其推送通知证书已过期,我们正在尝试创建一个新应用。我在 Provisioning 门户(ios_developer.cer、ios_distribution.cer)中创建了新证书并下载了它们。我按照here on Stack Overflow 的说明将其转换为 PEM,然后转换为 P12 文件,但我被卡住了。然后当我尝试将 PEM 转换为 P12 时,它需要某种私钥,而我不知道从哪里得到它。

我也尝试将这些加载到 Keychain Access 中。我读过您可以从那里将它们导出为 P12,但是当我执行导入时,它们不会出现在任何地方。

【问题讨论】:

【参考方案1】:

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

【讨论】:

没关系;弄清楚了。难怪人们会遇到这样的麻烦......这令人困惑! 会很好,但 p12 对我来说是灰色的 :( @Rob 您需要选择私钥而不是整个证书。在左上角的钥匙串中选择“登录”,然后在类别下方选择“证书”,您会看到证书现在有一个下拉箭头,单击它,私钥将显示右键单击并将帽子导出为 .p12 我也没有得到下拉选项。我下载后双击证书,它显示在登录钥匙串中,但不在私钥下。我只在Certificates下看到它,我看到的key和证书之间没有任何联系。 这里也一样。没有下拉菜单,p12 灰显【参考方案2】:

.p12 文件用于在 Apple App Store 上发布应用

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

    从实用工具打开钥匙串访问 从 Keychain Access 工具栏中选择 Keychain Access -> Preference 在弹出窗口中选择证书标签 将“在线证书状态协议”和“证书撤销列表”都设置为“关闭” 关闭此窗口 现在从工具栏中打开 钥匙串访问 > 证书助手 > 向证书颁发机构请求证书 输入您在 iOS 开发者计划中注册时使用的电子邮件地址和常用名 将 CA 电子邮件留空并选择“保存到磁盘”和“让我指定密钥对信息” 点击继续 选择硬盘上的文件名和目标 点击保存 在下一个窗口中,将“Key Size”值设置为“2048 bits”“算法”设置为“RSA” 点击继续

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

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

    登录苹果开发者账户点击“Certificates, Identifiers & Profiles” 点击“配置文件” 在“证书”部分点击“生产” 单击主面板右上角的“添加”(+) 按钮 现在,选择“App Store and Ad Hoc” 点击继续 点击“选择文件”并找到您从硬盘驱动器制作的 CSR 文件 点击生成 点击下载获取文件

C.安装.cer并生成.p12证书

    找到您已下载的 .cer 文件并双击 将登录下拉菜单设置为“登录”并单击添加 打开 KeyChain Access,您会发现在步骤 A 中创建的配置文件 您可以展开“私钥”配置文件(显示您添加的证书) 只选择这两项(不是公钥) 右键单击并从弹出窗口中单击“Export 2 items...” 现在确保文件格式为“.p12”,然后选择硬盘上的文件名和目标 单击保存。现在,系统会提示您设置密码,但将这两个都留空 单击确定。现在,您的硬盘上有一个 .p12 文件

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

如果您的钥匙串存在于 iCloud 中,则从 iCloud 中删除所有钥匙串内容并在 iCloud 中进行新设置。这应该可以工作。

【讨论】:

我不小心删除了我的私钥形式 ke-chain。所以现在我看不到证书下方的私钥。我有 CSR 文件如何从 CSR 再次安装私钥? 由于我是 Windows Phone 用户,我很难弄清楚苹果生成 .p12 文件的过程,这篇文章确实帮助我理解了它。 非常有用的说明。非常感谢。它节省了很多时间。 为什么将“在线证书状态协议”和另一个设置为关闭? 我解决了这个问题。向您解释我所做的:确保您的钥匙串没有出现在 iCloud 中。一旦出现,您就有可能遇到上述问题。我卸载了所有东西,在不使用 iCloud 中的数据的情况下进行了新设置,然后它就可以工作了。【参考方案3】:

除非您通过从钥匙链左下角选择(证书)进行过滤,否则您不会获得展开选项

【讨论】:

【参考方案4】:

好的,问题解决了!似乎当我双击证书时,它会自动将其安装在系统钥匙串中 - 我不知道为什么。所以相反,我只需将证书拖放到 LOGIN 钥匙串中,然后一切都很好。感谢这篇文章 -> Adding certificates to keychain and generating .p12 file format - alon Rosenfeld 10 个月前

【讨论】:

哦,哇。我花了几个小时试图弄清楚这一点。如果不是因为这个答案,我会再浪费一个星期。 非常感谢。我浪费了几个小时试图弄清楚这一点。 是的,浪费了几个小时,节省了:) 在 2020 年仍然有效。这个答案挽救了一台在与“没有 iOS 签名身份与指定的配置文件匹配”两天后即将被砸到墙上的 macbook。【参考方案5】:

要让你的 p12 文件走这条路..

第 1 步。XCode > 转到 项目设置 > 常规 > 签名 部分 > 签名证书

如下图所示,查看您为此特定应用使用的证书

第 2 步。 打开 钥匙串 > 左下 类别 部分 > 证书

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

第 3 步。 右键单击​​并导出为“Certificates.p12”,提供您的密码,例如。 “123456”

【讨论】:

我没有那个箭头可以展开【参考方案6】:

对于其他任何拥有灰色/灰色 P12 选项的人:

确保您位于“我的证书”或“证书”类别中 钥匙串访问。

https://sailthru.zendesk.com/hc/en-us/articles/115000032546-Can-t-export-my-certificate-in-p12-format

【讨论】:

【参考方案7】:

对于仍然遇到此问题的任何人,我的解决方案是不要同时选择“导出 2 项”(密钥和证书) - 而只是导出已经包含密钥的证书。截至 2016 年,我认为这是这样做的方法,因为以前与导出 2 项一起使用的上传不再有效。

【讨论】:

我不能只将证书导出为 p12 - 你确定这是正确的方法吗? 这里也一样。这很重要。【参考方案8】:

当我试图在没有 Mac 的情况下使用 MS Visual Studio App Center 在云中构建 iOS 应用程序时,我最终来到了这里。问题是每个教程都使用 Jayprakash Dubey 上面评价最高的答案。这种方法使用 Mac 和 KeyChain。解决方案来自 SOhere。

你需要一个 Key (aps_development.key),然后:

    创建密钥对:openssl genrsa -out aps_development.key 2048 创建 CSR:openssl req -new -sha256 -key aps_development.key -out aps_development.csr 将 CSR 上传到开发者门户以获取证书 aps_development.cer 转换证书:openssl x509 -inform DER -outform PEM -in aps_development.cer -out aps_development.pem 构建 PKCS#12:openssl pkcs12 -inkey aps_development.key -in aps_development.pem -export -out aps_development.p12

然后您可以继续制作应用 ID 和配置文件。这将允许您在 App Center 中构建。

【讨论】:

App Center 本身确实使用云端的 Mac 来构建 iOS 应用程序。 App Center Build 还希望您的应用能够在本地 Mac 环境中构建。因此,这种方法不受支持,并且可能会出现无法预料的问题,即使它现在有效。 @MattPil29 你从哪里下载 .key 文件? 我需要使用我的 Windows 机器生成 CSR 并将 CER 转换为 CodeMagic 的 P12,这些说明运行良好。【参考方案9】:

对于其他任何拥有灰色/灰色 P12 选项的人,

这是我的 macbook pro 的最新截图(2021 年)。

【讨论】:

以上是关于如何为 iOS 分发创建 P12 证书的主要内容,如果未能解决你的问题,请参考以下文章

如何保护 iOS p12 分发证书?

如何为 App Store 分发重新签署 iOS 应用程序?

iOS - p12 证书

如何为我的应用创建分销专业资料? [复制]

恢复没有 p12 密码的签名证书?

iOS 的 p12 证书是啥,应该共享吗?