一.前提準備:
1.從Apple下載下傳對應的證書(* . cer),包括Developement用于測試,Distribution用于釋出。
2.從本地Mac電腦生成p12密鑰檔案(* . p12)
二.生成證書:
1.其中aps_development.cer 為Apple下載下傳的對應證書,cert.pem為新生成的檔案。
openssl x509 -in aps_development.cer-inform DER -outcert.pem-outform PEM
2.其中aps_development.p12 為本地Mac電腦導出密鑰檔案,key.pem為新生成的檔案,生成key.pem時,需要使用者手動輸入密鑰(也就是導出 * . p12檔案時,輸入的密鑰)。
openssl pkcs12 -nocerts -out key.pem -in aps_development.p12
3.需要把cert.pem和key.pem 檔案合成一個 pem檔案供伺服器端使用,即下邊的ck.pem檔案。
cat cert.pem key.pem >ck.pem
這個ck.pem就是最後我們背景伺服器程式向蘋果APNS伺服器發推送通知請求時,使用的推送證書,其他檔案(cert.pem, key.pem)建議也不要立即删除,可以用于測試證書是否生成成功。
注意:
1.關于iOS推送方面的測試必須使用真機。
2.測試環境是通過蘋果沙箱伺服器,而正式釋出則利用APNS伺服器,具體差別如下。
a.伺服器端(我們自己寫的伺服器端程式,如PHP,Java等,不是蘋果的APNS伺服器)向蘋果APNS服務請求的位址不同。
測試環境:ssl://gateway.sandbox.push.apple.com:2195
正式環境:ssl://gateway.push.apple.com:2195
b.伺服器端(我們自己寫的伺服器端程式,如PHP,Java等,不是蘋果的APNS伺服器)使用的推送證書不同(就是上邊最終生成的ck.pem檔案),即測試環境使用從蘋果下載下傳的Developement版cer檔案;而正式版使用通過Distribution下載下傳的cer檔案。
三.測試APNS通信與證書是否生成成功
1.測試APNS通信:打開Mac作業系統中的“終端”,輸入以下指令判斷是否通信成功。
telnet gateway.sandbox.push.apple.com 2195
成功時提示:
Trying 17.172.233.65...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is '^]'.
2.測試證書是否生成成功:打開Mac作業系統中的“終端”,進入pem證書目錄下,輸入如下指令判斷是否生成成功,其中cert.pem與key.pem為上邊内容中生成的,輸入指令後需要輸入p12密鑰的密碼。
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert cert.pem -key key.pem