爲了實現iOS推送,需要給服務器製作p12文件。創建證書的過程,就不寫了,可以去網上自己查一下有很多。
我們就從證書下載安裝到本地開始,進行描述。
1、下載cer文件aps_development.cer,安裝到本地
2、導出p12文件push.p12,不要點開導出
3、生成證書的pem文件
openssl x509 -inform der -in aps_development.cer -out cer.pem
4、生成證書的pem文件,這裏會要求輸入密碼,就是導出時設置的密碼
pkcs12 -nocerts -out key.pem -in push.p12
5、 合成pem
cat cer.pem key.pem > ck.pem
6、生成p12
openssl pkcs12 -export -in ck.pem -out pushbird.p12
生成成功了,就可以了。
但我執行的時候出現了一個問題:
unable to load private key
4497311340:error:09FFF06C:PEM routines:CRYPTO_internal:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.260.1/libressl-2.6/crypto/pem/pem_lib.c:683:Expecting: ANY PRIVATE KEY
解決方法:
再重新生成一下pem
openssl pkcs12 -in push.p12 -out key.pem -nodes
之後再執行5、6就可以了。成功後會要求輸入兩次密碼。
附:
服務器是用php實現的用pem文件。
服務器使用java/c#實現的用p12文件。
開發環境驗證pem方法
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert ck.pem
正式環境驗證pem方法
openssl s_client -connect gateway.push.apple.com:2195 -cert ck.pem