用PHP在LINUX下创建.pem文件


Creating .pem file from pushnotification with PHP under LINUX w

我试图在我的应用程序中实现推送通知,为此我尝试使用easyApns,我按照步骤,并在我的linux上实现类。但不幸的是,我仍然打赌一些与证书有关的错误。

my error is:

警告:stream_socket_client() [function。stream-socket-client]: SSL操作失败,代码1。OpenSSL错误信息:错误:14094416:SSL例程:SSL3_READ_BYTES:sslv3警报证书/var/www/html/apns/classes/class_apns .php on line 401

警告:stream_socket_client() [function.stream-socket-client]:日志含义在/var/www/html/apns/classes/class_APNS.php中启用加密失败在401行

警告:stream_socket_client() [function.stream-socket-client]:无法连接到ssl://gateway.sandbox.push.apple.com:2195(未知错误)在/var/www/html/apns/classes/class_APNS.php上线401

Notice: Failed to connect to APNS: 0。1) APNS::__construct -> File:2) APNS::_fetchMessages -> File: class_APNS.phpAPNS::_pushMessage -> File: class_APNS.php(第376行)APNS::_triggerError -> File: class_APNS.php(第405行)in/var/www/html/apns/classes/class_apns .php第509行

我猜这是一个与证书(.pem文件)有关的错误

我的.pem文件是使用以下命令

生成的

openssl pkcs12 -in apns-dev-cert。P12 -out apns-dev-cert。Pem -nodes -clcerts

,它被放置在服务器上(基于linux),并赋予chmod 644权限

我还需要做些什么吗.....

您是否能够使用您的证书连接到apns ?试试下面的命令来检查:

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert YourSSLCertAndPrivateKey。. pem -debug -showcerts -CAfile server-ca-cert. pempem

如果命令终止,则无法连接。如果它继续运行并允许您在套接字中输入,则表示您已成功连接。

我已经发现,要使命令工作,必须:

  1. 创建一个证书签名请求(.csr)并将其上传到apple dev portal
  2. 下载提供的。p12许可证
  3. 使用证书+您的机器私钥将其转换为pem文件
  4. 从Entrust
  5. 下载并安装证书

参考:https://developer.apple.com/library/ios/技术说明/tn2265 _index.html

我有同样的问题。然后下载。p12文件$ openssl pkcs12 -in apns-dev-cert。P12 -out apns-dev-cert。Pem -nodes -clcerts然后使用Nilesh命令:$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert YourSSLCertAndPrivateKey。-showcerts -CAfile server-ca-cert.pem然后我得到这个错误

无法加载客户端证书私钥文件140405386606400:错误:0906D06C:PEM例程:PEM_read_bio:no start line:pem_lib.c:696: expected: ANY PRIVATE KEY

谢谢

在生成.pem之前,请仔细检查。你正确地从Keychain导出了"2"项:

Apple Development IOS Push Services +用户名key。

然后导出2项