【问题标题】:Generate .pem file used to set up Apple Push Notifications生成用于设置 Apple 推送通知的 .pem 文件
【发布时间】:2014-02-10 14:20:09
【问题描述】:

我尝试并尝试生成一个 .pem 文件,每次都从客户的帐户生成证书,然后使用终端生成 .pem 文件,但它没有用。谁能给个分步流程?

【问题讨论】:

    标签: ios push-notification apple-push-notifications pem


    【解决方案1】:

    要为您的 iOS 应用启用推送通知,您需要创建 Apple 推送通知证书(.pem 文件)并将其上传给我们,以便我们能够代表您连接到 Apple 推送服务器。

    (Updated version with updated screen shots Here)

    第一步:登录iOS Provisioning Portal,点击左侧导航栏的“证书”。然后,点击“+”按钮。

    第 2 步:在 Distribution 部分选择 Apple Push Notification service SSL (Production) 选项,然后点击“Continue”按钮。

    第 3 步:选择您要用于 BYO 应用的 App ID(如何创建 App ID),然后点击“继续”进入下一步。

    第 4 步:按照“关于创建证书签名请求 (CSR)”的步骤创建证书签名请求。

    补充 Apple 提供的说明。以下是一些额外的屏幕截图,可帮助您完成所需的步骤:

    第 4 步补充屏幕截图 1:导航到 Mac 上 Keychain Access 的证书助手。

    第四步补充截图2:填写证书信息。点击继续。

    第五步:上传第四步生成的“.certSigningRequest”文件,然后点击“生成”按钮。

    第六步:点击“完成”完成注册,iOS Provisioning Portal 页面将刷新,如下图所示:

    然后单击“下载”按钮下载您刚刚创建的证书(.cer 文件)。 - 双击下载的文件,将证书安装到 Mac 上的 Keychain Access 中。

    第 7 步:在您的 Mac 上,转到“钥匙串”,查找您刚刚安装的证书。如果不确定哪个证书是正确的,则应以“Apple Production IOS Push Services:”开头,后跟您应用的捆绑包 ID。

    第 8 步:展开证书,您应该会看到带有您的姓名或公司名称的私钥。使用键盘上的“选择”键选择这两个项目,右键单击(如果使用单键鼠标,则单击 cmd-click),选择“导出 2 个项目”,如下所示:

    然后将名为“pushcert.p12”的 p12 文件保存到您的桌面 - 现在您将被提示输入密码以保护它,您可以单击 Enter 跳过密码或输入您想要的密码。

    第 9 步:现在最困难的部分 - 在 Mac 上打开“终端”,然后运行以下命令:

    cd
    cd Desktop
    openssl pkcs12 -in pushcert.p12 -out pushcert.pem -nodes -clcerts
    

    第 10 步:从桌面删除 pushcert.p12 以避免将其错误上传到 Build Your Own 区域。在 Mac 上打开“终端”,然后运行以下命令:

    cd
    cd Desktop
    rm pushcert.p12
    

    第 11 步 - 新的 AWS 更新:创建新的 pushcert.p12 以提交到 AWS SNS。双击新的pushcert.pem,然后只导出绿色突出显示的那个。

    信用:AWS new update

    现在您已成功创建 Apple 推送通知证书(.p12 文件)!稍后您需要将此文件上传到我们的 Build Your Own 区域。 :)

    【讨论】:

    • 看起来你现在可以直接从 Keychain 导出到 PEM 文件(步骤 8-10)。
    • 我可以重现这些步骤进行开发认证吗?
    • 什么是“Build Your Own”区域,为什么我们必须将 pem 文件上传到该区域?
    • 为什么互联网上的所有这些答案都忽略了不断被问到的关于“自建”是什么的真正问题?如果使用 Xcode,你会在哪里上传这个 PEM?
    • 就我而言,我需要从 p12 证书创建两个 pem 文件。只需在钥匙串访问中分别导出证书和密钥文件,而不是一起导出 2 个项目。但这个答案绝对很棒!
    【解决方案2】:

    今天有更简单的解决方案 - pem。这个工具让生活变得更轻松。

    例如,要生成或更新您的推送通知证书,只需输入:

    fastlane pem 
    

    不到一分钟就搞定了。如果您需要沙盒证书,请输入:

    fastlane pem --development
    

    那就太好了。

    【讨论】:

    • 而且不仅有 PEM。整个 fastlane 工具绝对出色
    • 非苹果系统也可以使用吗?
    • @KrauseFx,如果我确实通过 pem 生成它,我如何让它显示在这里:developer.apple.com/account/ios/certificate?我发现这对于查看最新的到期日期等非常有用?这是自动发生的事情吗?
    • @Nikola 无需对 iTunes Connect 执行任何操作,您可以立即使用该 pem 文件
    • @mikejd 我们不需要指定 p12 应该用于 pem 吗?
    【解决方案3】:
    $ cd Desktop
    $ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
    

    【讨论】:

    • 这行得通吗?我使用这种方法在 Windows 10 上制作了一个 PEM 文件,但是当我使用生成的 pem 发送推送通知时,我得到了“无法连接到 'ssl:\/\/gateway.sandbox.push.apple.com”。
    【解决方案4】:

    Apple 已更改所颁发证书的名称。您现在可以将相同的证书用于开发和生产。虽然您仍然可以申请仅限开发的证书,但您不能再申请仅限生产的证书。

    【讨论】:

      【解决方案5】:

      谢谢!以上所有答案。 我希望你有一个 .p12 文件。现在,打开终端写入以下命令。将终端设置为放置 .12 文件的路径。

      $ openssl pkcs12 -in yourCertifcate.p12 -out pemAPNSCert.pem -nodes
      Enter Import Password: <Just enter your certificate password>
      MAC verified OK
      

      现在您的 .pem 文件已生成。

      验证 .pem 文件 首先,在文本编辑器中打开 .pem 以查看其内容。证书内容应采用如下所示的格式。确保 pem 文件包含证书内容(从 BEGIN CERTIFICATE 到 END CERTIFICATE)以及证书私钥(从 BEGIN PRIVATE KEY 到 END PRIVATE KEY):

      > Bag Attributes
      >     friendlyName: Apple Push Services:<Bundle ID>
      >     localKeyID: <> subject=<>
      > -----BEGIN CERTIFICATE-----
      > 
      > <Certificate Content>
      > 
      > -----END CERTIFICATE----- Bag Attributes
      >     friendlyName: <>
      >     localKeyID: <> Key Attributes: <No Attributes>
      > -----BEGIN PRIVATE KEY-----
      > 
      > <Certificate Private Key>
      > 
      > -----END PRIVATE KEY-----
      

      此外,您还可以通过访问 SSLShopper Certificate Decoder 并粘贴证书内容(从 BEGIN CERTIFICATE 到 END CERTIFICATE)来检查证书的有效性,以获取有关证书的所有信息,如下所示:

      【讨论】:

        【解决方案6】:

        导出Cert.p12和key.p12后就很简单了, 请在下面找到生成“apns”.pem 文件的命令。

        https://www.sslshopper.com/ssl-converter.html

        command to create apns-dev.pem from Cert.pem and Key.pem
        
    
        
        openssl rsa -in Key.pem -out apns-dev-key-noenc.pem
        
    
        
        cat Cert.pem apns-dev-key-noenc.pem > apns-dev.pem
        

        上述命令对沙盒和生产都很有用。

        【讨论】:

          【解决方案7】:

          根据Troubleshooting Push Certificate Problems

          您的 Apple Developer Program 帐户中可用的 SSL 证书包含公钥,但不包含私钥。私钥仅存在于创建上传到 Apple 的证书签名请求的 Mac 上。公钥和私钥都是导出隐私增强邮件 (PEM) 文件所必需的。

          您无法从客户端提供的证书中导出工作 PEM 的原因可能是您没有私钥。证书包含公钥,而私钥可能只存在于创建原始 CSR 的 Mac 上。

          您可以:

          1. 尝试从最初创建 CSR 的 Mac 获取私钥。可以从该 Mac 导出 PEM,也可以将私钥复制到另一台 Mac。

          1. 创建新的 CSR、新的 SSL 证书,这次备份私钥。

          【讨论】:

            猜你喜欢
            • 2023-03-12
            • 1970-01-01
            • 2013-04-09
            • 1970-01-01
            • 2015-03-29
            • 1970-01-01
            • 2023-03-05
            • 2018-10-24
            • 1970-01-01
            相关资源
            最近更新 更多