這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
今天在完成ios推送過程中遇到一些問題,同事幫我註冊了一個蘋果的認證,然後用認證產生相應的pem檔案,網上關於產生pem檔案有很多方式
(1)php
- deviceToken: <6974ac11 870e09fa 00e2238e 8cfafc7d 2052e342 182f5b57 fabca445 42b72e1b>
|
2. 產生app在服務端需要的許可*****br> 1)進入Provisioning Portal, 下載Certificates在development下的認證。
3.找到需要測試的app id,然後enable它在development下的Apple Push Notification service: Development Push SSL Certificate。需要輸入1)中的簽署憑證才可以產生一個aps_developer_identity.cer.
4.雙擊aps_developer_identity.cer,會開啟系統的key chain. 在My certificates下找到Apple Development Push Services。需要為certificate和它之下的private key各自export出一個.p12檔案。(會出現設定密碼過程)
5.需要將上面的2個.p12檔案轉成.pem格式:
複製代碼 openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12 |
openssl pkcs12 -nocerts -out key.pem -in key.p12
6.如果需要對key不進行加密:
複製代碼 openssl rsa -in key.pem -out key.unencrypted.pem |
7.然後就可以合并兩個.pem檔案, 這個ck.pem就是服務端需要的認證了。
複製代碼 cat cert.pem key.unencrypted.pem > ck.pem |
(2)go
在php用openssl產生cert.pem和key.pem過程中,分別用cert.p12和key.p12檔案,同事給我的只有aps_development.cer和push_dev.p12
下面用aps_development.cer產生cert.pem檔案
命令:
openssl x509 -in aps_development.cer -inform der -out cert.pem -passin pass:P12_PASS (P12_PASS為產生p12檔案時的密碼)產生加密的key.pem檔案openssl pkcs12 -nocerts -out key.pem -inpush_dev.p12 -passin pass:P12_PASS -passout pass:TMP_PASS(TMP_PASS為自己設定的臨時密碼用於產生不加密的key.pem檔案)
產生不加密的key.pem檔案openssl rsa -in key.pem -out unencryptkey.pem -passin pass:TMP_PASS(為剛才設定的臨時密碼,必須大於等於4個字元)
到這裡所需的cert.pem檔案和unencryptkey.pem 檔案就產生了。go語言提供的tls庫中的LoadX509KeyPair並沒有傳入密碼的選項,所以要產生unencryptkey.pem 的檔案,自己可以下載windows下openssl工具,然後用認證自己產生。