无法连接到APNS沙盒服务器

时间:2011-07-21 13:32:19

标签: ssl push push-notification apple-push-notifications

我正在尝试使用以下观察结果连接到Apple APNS服务器:

1)端口2195已打开2)具有APNS_SSLCertificate_Key.pem的有效密钥密码3)从https://www.entrust.net/downloads/binary/entrust_ssl_ca.cer下载的委托证书(2048)

4)成功的telnet响应如下:

  

$ telnet gateway.sandbox.push.apple.com 2195尝试17.172.232.226 ...   连接到gateway.sandbox.push-apple.com.akadns.net。逃逸   字符是'^]'。

但是当我在服务器中运行以下openssl命令来测试APNS连接时:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert  APNS_SSLCertificate_Key.pem -debug -showcerts -CAfile server-ca-cert.pem

我收到如下错误:

  

无法加载证书57013:错误:0906D06C:PEM   例程:PEM_read_bio:没有开始   行:/SourceCache/OpenSSL098/OpenSSL098-35/src/crypto/pem/pem_lib.c:650:期待:   值得信赖的证书

因此,请建议如何解决此问题

提前致谢......

2 个答案:

答案 0 :(得分:36)

我遇到了同样的问题;最终解决错误的是从OS / X Keychain Access应用程序的系统根源重新导出Entrust证书。

为了完整,我将完整解释我是如何创建密钥/证书文件的(应该是Apple的TechNote 2265中的内容:https://developer.apple.com/library/content/technotes/tn2265/_index.html

创建您的APN-cert-and-key:

  1. 运行Keychain Access;选择“登录”钥匙串和“我的证书”类别
  2. 选择名称格式为“Apple Development IOS Push Services:...”的证书
  3. 导出证书(在菜单中,在“文件”下。“导出项目”)
  4. 导出为.p12格式。
    现在,它包含加密交换格式的证书和私钥。下一步是将其转换为密码保护的.pem文件
  5. 使用终端,执行以下命令(当然使用您自己的文件名):

    openssl pkcs12 -in PushCertKey.p12 -out PushCertKey.pem

    (您需要输入.p12文件的密码,并为.pem文件提供另一个密码。)

    如果真的真的不想在.pem文件上使用密码,请尝试:

    openssl pkcs12 -in PushCertKey.p12 -out PushCertKeyNoCrypt.pem -nodes

  6. 创建CA证书文件:

    1. 列表项
    2. 运行Keychain Access应用程序
    3. 转到系统根
    4. 将名为“Entrust.net Certification Authority(2048)”的证书导出到.pem文件。

      注意:我的Roots容器有四个Entrust证书;其中两个名称为“Entrust.net Certification Authority(2048)”(但具有不同的证书扩展名,通过Get Info)。两个“Entrust.net证书颁发机构(2048)”证书都有效地验证了信任链;另外两个Entrust证书不起作用。更重要的是,Apple TechNote 2265指出的Entrust证书也不起作用。

      确保导出为.pem格式;默认为.cer,这个步骤很容易错过。
    5. 运行验证命令:

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

      此服务器和进程假设您正在连接到Apple的Dev沙箱APN服务器;如果您尝试使用生产APN服务器,则需要使用正确的服务器和端口。

      有关openssl的更多信息,我建议以下页面:

答案 1 :(得分:0)

SSL问题:逐步修复。 大多数问题都是由私钥问题引起的,可以通过以下方式解决。

按照以下命令使用openssl创建.p12。

  1. 你需要 developer_identity.cer< =从Apple下载 mykey.p12< =您的私钥

  2. 在配置,安装或运行openssl的终端中运行以下命令:

    • openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM
    • openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem
    • openssl pkcs12 -export -inkey mykey.pem -in developer_identity.pem -out iphone_dev.p12
  3. 您需要的最终p12是iphone_dev.p12文件和您设置的密码。

    再试一次,希望你的问题得到解决,因为它总是对我有用。 :)