生成certSigningRequest文件
该文件是MAC系统生成的,用于在Apple网站上申请推送证书文件。
打开应“钥匙串访问”软件,菜单->钥匙串访问->证书助理->从证书颁发机构请求证书,填写邮箱和名称(随便写),选择保存到磁盘,此时会生成一个CertificateSigningRequest.certSigningRequest文件。
注册一个支持Push的app id
进入developer.apple.com,选择member center-certificates,Identifier & profiles-identifiers-App ids,注册app id,设置app id名称。同时qpp id suffix一栏选择explicit app id,设置bundle id。勾选App Services中得Push Notifications,这样就可以注册一个支持push app id。
生成cer文件
该文件用于生成服务端需要的文件。
生成过程:进入developer.apple.com,选择member center-certificates,Identifier & profiles-certificates,然后创建certificate,类型分为Development 和 Product。eg:Development,选择Apple Push Notification service SSL (Sandbox) ,选择之前生成的支持push的Appid,然后提交之前创建的CSR文件,生成cer文件,保存到本地。
生成服务器端的证书文件
如果使用网上的mac版PushMeBaby工具,在Mac机器上进行推送使用上面的cer就可以了,如果使用PHP、java/c#开发服务端,需要将cer转换生成pem或p12文件。
在应用服务器采用php的方式将消息推送给APNS,
php连接APNS也是需要证书的,打开终端,对上面的证书做如下处理,
cd 进入证书所在目录
把.cer文件转换成.pem文件:
$ openssl x509 -in aps_developer_identity.cer -inform der
-out PushCert.pem
把私钥Push.p12文件转换成.pem文件:
$ openssl pkcs12 -nocerts -out PushKey.pem -in Push.p12
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:
你首先需要为.p12文件输入passphrase密码短语,这样OpenSSL可以读它。然后你需要键入一个新的密码短语来加密PEM文件。还是使用”pushchat”来作为PEM的密码短语。你需要选择一些更安全的密码短语。
注意
如果你没有键入一个PEM passphrase,OpenSSL将不会返回一个错误信息,但是产生的.pem文件里面将不会含有私钥。
最后。把私钥和证书整合到一个.pem文件里:
$ cat PushCert.pem PushKey.pem > ck.pem
为了测试证书是否工作,执行下面的命令:
$ telnet gateway.sandbox.push.apple.com 2195
Trying 17.172.232.226…
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is ‘^]’.
它将尝试发送一个规则的,不加密的连接到APNS服务。如果你看到上面的反馈,那说明你的MAC能够到达APNS。按下Ctrl+C 关闭连接。如果得到一个错误信息,那么你需要确保你的防火墙允许2195端口。
然后再次连接,这次用我们的SSL证书和私钥来设置一个安全的连接:
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195
-cert PushChatCert.pem -key PushChatKey.pem
Enter pass phrase for PushChatKey.pem:
你会看到一个完整的输出,让你明白OpenSSL在后台做什么。如果连接是成功的,你可以键入一些字符。当你按下回车后,服务就会断开连接。如果在建立连接时有问题,OpenSSL将会给你一个错误消息,
ck.pem文件就是我们需要得到php连接APNS 的文件,将ck.pem和push.php放入同一目录上传到服务器。
生成Xcode使用的provisioning文件
该文件用于真机调试。
生成过程:进入developer.apple.com,选择member center-certificates,Identifier & profiles-provisioning profiles,然后创建provi file。选择iOS App Development->AppId->选中之前生成的支持push的appid->选中支持的push的certi->勾选支持的device id->设置provisioning文件的文件名,即完成provisioning文件的生成。