轉(zhuǎn)載:http://blog.csdn.net/yanglei3kyou/article/details/78840222
闡述
最近有許多證書將要過期染乌,趁著有時(shí)間趕緊將公司的證書全部梳理一遍秦士。在對百度推送進(jìn)行證書更新時(shí)立磁,出現(xiàn)了“證書無效”的錯(cuò)誤(去年更新的時(shí)候也沒出現(xiàn)問題)洲鸠,折騰好幾天才解決掉姐刁。記錄一下余掖,并辟謠許多錯(cuò)誤的說法(不讓大家走彎路)田篇。
探討
首先感謝一下 “控記我記幾”许布,在他的博文中所提出的解決方法很有效果兴革。
- openssl 版本問題
博主指出百度推送不接受 openssl 版本高于0.9.8 所生成的pem, 查了一下現(xiàn)在的系統(tǒng)是macOS High Sierra 10.13.2爹脾,opensll 版本為 2.2.7帖旨。
故感覺問題可能出在這個(gè)地方。
解決方法:
1 至 openssl 官網(wǎng)下載0.9.8zh版本https://www.openssl.org/source/old/0.9.x/
2 解壓下載的壓縮包
3 通過Terminal (終端) 進(jìn)入剛才解壓目錄
4 Terminal (終端) 執(zhí)行命令
[plain]view plaincopy
./Configure?darwin64-x86_64-cc?--prefix=/usr/local/openssl?—shared????
Tip: 這一步執(zhí)行完后手動(dòng)到 /usr/local/ 目錄下查看是否有一個(gè)openssl 文件夾灵妨,如果沒有則說明當(dāng)前用戶沒有權(quán)限來創(chuàng)建 openssl 文件夾解阅,此時(shí)我們手動(dòng)在這個(gè)目錄下創(chuàng)建 openssl 文件夾,然后再次執(zhí)行上面的命令
5 Terminal (終端) 執(zhí)行命令
[plain]view plaincopy
make?&&?make?install??
6 此時(shí) openssl (Unix可執(zhí)行文件) 會(huì)出現(xiàn)在?/usr/local/openssl/bin/openssl 目錄下泌霍, 我們用命令查看一下當(dāng)前 openssl 版本
查看之后還是沒有货抄,還是因?yàn)槲募?quán)限的問題。
sudo chmod -R 777 /usr/local/openssl
使用上面的命令將權(quán)限改到最大朱转。編譯還是不好用蟹地,我把別人編譯好的openssl直接放進(jìn)去,然后使用藤为,成功了怪与。
[plain]view plaincopy
/usr/local/openssl/bin/openssl?version????
·將開發(fā)者賬號后臺(tái)的APN證書下載到本地,然后安裝到MAC OS 的鑰匙串缅疟。
·安裝完成后找到安裝好的APN證書分别,右鍵導(dǎo)出證書(非密鑰)為P12文件,設(shè)置密碼處不用輸入存淫。
7 執(zhí)行百度推送所使用的命令
? ?/usr/local/openssl/bin/openssl pkcs12 -in MyApnsCert.p12 -out MyApnsCert.pem -nodes
Tip: openssl 必須使用剛才所創(chuàng)建的 0.9.8zh 版本
辟謠
經(jīng)過實(shí)際測試耘斩,發(fā)現(xiàn)以下幾個(gè)說法不正確,大家勿信
說法一
名稱為中文的P12所生成的Pem 不能通過驗(yàn)證錯(cuò)誤
說法二
P12名稱必須為 MyApnsCert.p12 且Pem名稱必須為?MyApnsCert.pem桅咆, 否則不能通過驗(yàn)證錯(cuò)誤
說法三
Keychain Access (鑰匙串) 導(dǎo)出證書時(shí)括授,證書必須是收起狀態(tài)(即不能顯示專用密鑰),否則不能通過驗(yàn)證錯(cuò)誤
參考資料