為什麼需要 P12 or PEM 檔?
先前的文章有提到關於 P12 與 PEM 是一種加密過後的 CER 檔,那麼為什麼需要加密呢?
因緣際會下碰到完全沒有任何設定的開發者帳號,便利用這個機會好好試一下這些東西。
首先,以「純個人」開發者角度而言:
假設你只有一台工作電腦,那你在本機輸出 XXX.certSigningRequest 檔並利用其來建立 Apple Push Services or APNs Development iOS 的 Certificate 時,基本上是不會遇到問題的,因為在正常步驟下加密所需要的私密金鑰本來就存在於你的鑰匙圈(KeyChain)。
如果你有多台電腦或者有多人共用同一個開發者帳號時:
馬上就會遇到沒有私密金鑰的問題。就算你是直接從Developer Center 下載 .cer 使用,你將無法正常使用推播,尤其是你打算在 Local 建一個 Push Server的話,馬上會遇到下面這段訊息。
Connected to server gateway.sandbox.push.apple.com Set SSL connection Set peer domain name gateway.sandbox.push.apple.com Keychain Opened Certificate data for Apple Push Services: com.boardinc.Board initialized successfully Failure creating sec identity, error code -25300 Failure creating client certificate, error code -50 Failure performing handshake, error code -9824 Token: <*********************************************> Failed with sending data to gateway.sandbox.push.apple.com:2195 with ERROR: -9806, error cod e -9806 Disconnected from server gateway.sandbox.push.apple.com:2195那麼,我要怎麼判斷我的憑證有沒有私密金鑰呢?

可以看到同樣都是推播所需要的憑證,但一個有金鑰一個沒有。
此時若要解決這個問題,就必須跟你的上頭(Agent)重新要求一個 P12 的檔案,輸入密碼解開之後你就會發現原本缺少金鑰的憑證,一動也不動地在那對你冷笑 ⋯⋯
的確,這個動作已經把金鑰加入了鑰匙圈中,你可以在密鑰中看到你的 Agent 名稱,但是憑證跟金鑰請看成兩回事。
所以只要把憑證刪掉之後,重新點擊你的 .cer 檔,就會發現此時新增的憑證多了私密金鑰。
另一個方法則是,你在本機註冊新的 .cerSigninRequest,然後在 Developer Center 那邊點選 Edit 編輯你的App id,並在 Push Notifications 那重新建立以你本機的 .cerSigninRequest 製作的 Certificate,然後你就會在 Certificate 那邊發現名稱一樣的憑證。
不論是從美觀的角度或者這個行為聰明不聰明,應該都要避免這樣的做法⋯⋯
你問為什麼?難道你不知道工程師都應該要養成寫出可重複利用性高的Code的習慣嗎?
同樣的Code不要一直複製貼上啊!!!!
同樣的Code不要一直複製貼上啊!!!!
同樣的Code不要一直複製貼上啊!!!!
補一下網站的說明
Apple Push Notification service SSL Certificates
To configure push notifications for this iOS App ID, a Client SSL Certificate that allows your notification server to connect to the Apple Push Notification Service is required. Each iOS App ID requires its own Client SSL Certificate. Manage and generate your certificates below.
延伸閱讀
- 產出 .p12 憑證與 provisioning profile 檔案
- Easy APNs Provider,自己建立Local Push Server
- Push Notifications Tutorial: Getting Started
- parse-server-push-notification-APNS
最後的懶人包
如果你是一個 PM or Planner,請把 Distribution 的憑證加密成為 P12 後跟其他憑證檔打包後給你親愛的RD。
如果你是一個 RD,請從你親愛的 PM or Planner 給你的那包檔案中,先找到 P12 檔並輸入密碼解開它,再逐一的把其他憑證檔陸續放到你的鑰匙圈中。
如果你最後才點了 P12,你就會發現該有私密金鑰的憑證卻沒有出現私密金鑰的樣子。
如果你是 RD 兼一堆有得沒有的人,你就老實點自己做一次學經驗吧。 -_-b
