Mac上配置推送使用的pem檔案
感覺上應該是這樣的,這個pem檔案是由公鑰和私鑰配置。公鑰就是蘋果開發者網站生成的cer檔案,私鑰就是鑰匙串中這個證書匯出的p12檔案。這個找機會深入研究一下。
直接說配置步驟(以開發環境為準,生產環境類似):
1、建立證書
長話短說,從鑰匙串的證書助理中請求一個csr檔案到本地,使用這個csr檔案建立開發環境推送證書,下載到本地。
小技巧:可以從bundle id的setting介面create推送證書。
2、匯出p12檔案
雙擊下載好的證書,匯入鑰匙串中,在鑰匙串中找個這個證書,展開前邊的小三角,能看到下屬一個圖示未鑰匙的私有key,右鍵匯出為p12檔案,密碼隨便輸入一個(假設輸入的123)。
3、匯出pem檔案
將步驟1、2中的檔案放在同一個資料夾下,終端開啟,cd進入該資料夾。
假設步驟1的檔名為aps_development.cer,步驟2的檔名為key.p12
終端依次執行
匯出公鑰的pem檔案:openssl x509 -in aps_development.cer -inform der -out PushNotifCert.pem
匯出私鑰的pem檔案:openssl pkcs12 -nocerts -out PushNotifKey.pem -in key.p12,這一步會提示輸入import密碼,輸入步驟2的匯出密碼123,然後要求輸入pem檔案的密碼,隨便輸入一個(假設輸入的1234)。再次校驗(輸入1234)。
匯出私鑰的無密碼pem檔案:openssl rsa -in PushNotifKey.pem -out PushNotifNokey.pem。這一步會校驗密碼,輸入上一步的密碼1234。
最後將公鑰私鑰合併為推送使用的pem檔案:cat PushNotifCert.pem PushNotifNoKey.pem > dev_push.pem
桌面是生成的dev_push.pem檔案即為推送需要的證書檔案。
生成完畢之後,可以測試一波(用到公鑰pem檔案和私鑰的無密碼pem檔案):
終端測試開發環境的證書:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushNotifCert.pem -key PushNotifNoKey.pem
終端測試生產環境的證書:openssl s_client -connect gateway.push.apple.com:2195 -cert PushNotifCert.pem -key PushNotifNoKey.pem
可能報錯,不包含私有key或者載入私有key失敗,這種情況多半是證書的問題,重新配置一下證書。
成功的話,會輸出一大堆,然後會輸出closed。