1. 程式人生 > >Mac上配置推送使用的pem檔案

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。