无法连接到APNS沙盒服务器

Fed*_*ick 11 ssl push push-notification apple-push-notifications

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

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

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
Run Code Online (Sandbox Code Playgroud)

我收到如下错误:

无法加载证书57013:错误:0906D06C:PEM例程:PEM_read_bio:无起始行:/SourceCache/OpenSSL098/OpenSSL098-35/src/crypto/pem/pem_lib.c:650:期待:TRUSTED CERTIFICATE

所以请建议如何解决这个问题

提前致谢 ......

Rob*_*man 36

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

是完整的,我给的我是如何创建的密钥/证书文件(一些东西,应该是在苹果的技术说明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

创建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,这一步很容易错过.

运行验证命令:

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

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

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

  • 要在命令行上将.trtrin证书(我使用TechNote中链接到的证书)从.cer转换为PEM格式:`openssl x509 -in entrust.cer -out entrust.pem` (2认同)