天天看點

iOS通知推送-生成證書

一.前提準備:

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