【问题标题】:terminal error in between connecting SSL certificate and private key to set up a secure connection:连接 SSL 证书和私钥以建立安全连接之间的终端错误:
【发布时间】:2012-04-09 07:46:45
【问题描述】:

我正在尝试在我的应用中进行推送通知并点击此链接 http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

我的系统已经成功连接到telnet,但是当我输入连接ssl证书和私钥的查询时发现错误

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
unable to load client certificate private key file
1301:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-44/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY

谁能告诉我是什么类型的错误,解决方法是什么?

提前致谢

【问题讨论】:

    标签: objective-c openssl apple-push-notifications


    【解决方案1】:

    以下命令足以验证密钥/证书:

    openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert push_development.pem
    

    关键部分是在从 Keychain Access 导出 .p12 时选择 certificateprivate key(您将被要求输入 3 个密码,一个用于 .p12 ,一个用于证书,一个用于私钥)。

    要将 .p12 转换为 .pem,请按照 Apple 中的说明进行操作:

    openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
    

    【讨论】:

    • 仍然没有帮助“无法加载客户端证书私钥文件”。 openssl s_client -connect api.development.push.apple.com:443 -cert my.pem
    【解决方案2】:

    起初我也面临这个问题。

    我们有两个文件

    1) 一个是来自苹果的aps_development.cer 2) 另一个 1 来自 keychain access,我们刚刚创建的通用名称。

    之后,都将其转换为.pem 文件。 例如,cert.pemkey.pem。 之后使用以下命令合并这两个文件

    cat cert.pem key.pem > ck.pem
    

    一开始我用下面的命令来打开ssl。

    openssl s_client -connect gateway.sandbox.push.apple.com:2195
        -cert cert.pem -key key.pem
    

    这会返回您提到的错误。 之后我尝试使用

    openssl s_client -connect gateway.sandbox.push.apple.com:2195
        -cert cert.pem -key ck.pem
    

    然后它已经工作了。希望这可以帮助。

    【讨论】:

    • 我做了同样的事情,但问题仍然存在。还有什么建议吗?谢谢
    • 我尝试了建议的解决方案,但错误仍然存​​在。还有其他建议吗?
    【解决方案3】:

    我在为企业分发生成 PEM 文件时遇到了同样的问题,但后来我发现我针对 iPhone 分发证书生成了一个 p12 文件键虽然我应该针对 Apple Production iOS Push Servies 键生成 p12。如果有人使用了分发密钥,希望这可以解决问题。

    【讨论】:

      【解决方案4】:

      您好,请按照以下命令进行操作。 步骤1 openssl pkcs12 -clcerts -nokeys -out developer_key.pem -in developer_key.p12

      注意:只需将文件路径拖到终端...

      第二步 openssl pkcs12 -nocerts -out apns_key.pem -in apns_key.p12

      第三步 openssl pkcs12 -in developer_key.p12 -out developer_key.pem -nodes -clcerts

      第四步 openssl pkcs12 -in apns_key.p12 -out apns_key.pem -nodes -clcerts

      第 5 步 cat apns_key.pem developer_ket.pem >developer.pem

      对分发证书执行相同的步骤

      创建developer.pem和distribution.pem后

      请在以下命令中验证这两个文件。

      步骤 6 openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert developer.pem -debug -showcerts -CAfile "Entrust.net.Certification Authority (2048).pem

      【讨论】:

        【解决方案5】:

        通知是密码短语必须超过 3 个字符。

        我刚刚修复了密码短语是 1234 :D

        【讨论】:

          最近更新 更多