"iOS push全方位解析(二)【譯文】"——產生OpenSSL認證,Provisioning Profile

來源:互聯網
上載者:User

標籤:product   cer   還需要   explicit   load   ssl   rate   down   checkbox   

這是一篇來自raywenderlich的教程,內容翔實!結構簡單透徹、講解循序漸進、文章品質上乘!是一篇難的的博文!使用半瓶的英語水平翻譯了一下:
1.【iOS push全方位解析】(一) push的概述
2.【iOS push全方位解析】(二) 產生push認證,產生Provisioning Profile(本篇)
3.【iOS push全方位解析】(三) 一個極簡的demo,並測試一下push

這裡查看原文

--------------------------------------------------------------------------------------------------------------------------------------------

Provisioning Profile和認證,Oh My!        為了App中push通知好用,App需要provisioning profile簽名。另外,App Server需要用SSL認證對push通知簽名。provisioning profile和SSL 憑證是緊密串連在一起的,並且僅對一個App ID可用,這麼做可以保證只有你的App Server可以發送push訊息到你的App而不是別人的App。
正如你所知,App使用不同的provisioning profile分別用於開發和發布。同樣,也有兩種push認證:
● Development 被開發人員provisioning profile簽名的app,App Server必須使用開發人員認證發送通知。
● Production 按照Ad Hoc或者APP Store發布的app,App Server必須使用production認證。如果兩者混淆,那麼App則收不到push通知。

本教程僅使用development 認證


產生Certificate Signing Request(CSR)    還記得你是如何為App真機聯調產生Development 認證嗎?如果記起來了,下面的步驟會很熟悉。但,我建議你還是嚴格按照步驟操作。大多數做push通知開發的時候,都遇到了認證問題。
    數位憑證是基於公-私密金鑰的密碼學。你不必知道cryptography如何使用認證:,但是你有必要瞭解:認證總是跟私密金鑰一起工作的。認證只是“公-私密金鑰”的公開部分。發給其他人是安全的,然而,私密金鑰應該被保護好,它是一個秘密。私密金鑰不是別人的事兒,而是你自己的事!有一點很重要:沒有私密金鑰,不能使用認證。
    無論什麼時候,請求一個數位憑證,需要提供一個Certificate Signing Request(簡寫CSR)。當產生CSR,一個新的私密金鑰被放到mac的鑰匙串中了。接著,你發送CSR到一個認證機構(這裡就是iOS developer protal),該機構將基於你提交的CSR產生SSL認證。

    開啟mac中的“鑰匙串”,選擇菜單,“Request a Certificate from a Certificate Authority”


(圖)請求認證1
如果你沒有這個菜單選項或者顯示“Request a certificate from a certificate Authority with key”,你下載並安裝WWDR InterMediate Certificate ,並確保在鑰匙串視窗中沒有選中任何一個私密金鑰。

你應該看到:


(圖)請求認證2
輸入email地址。我聽說需要使用,用於App簽名的email相同。但是,好像其他什麼email都ok。

輸入“PushChat”作為名字,這兒可以輸入任何字元,找一個好記的,方便後面我們發現私密金鑰。選中【 Saved to disk】點擊“Continue”。將檔案儲存為“PushChat.certSigningRequest”。在“密鑰”這個欄中可以看到剛剛申請的private,右鍵,並選擇“Exprot”


(圖)匯出認證
儲存私密金鑰為PushChatKey.p12並輸入一個密碼。本教程中,我使用“pushchat”作為p12檔案的密碼,但是你應該選一個容易記的密碼。這個密鑰(p12)檔案需要保密。
產生App ID和SSL認證

登入iOS Dev Center選擇右側面板的“Certificate,Identifiers&Profile”。


(圖)iOS dev center

下面的介面出現了


(圖)Certificate,Identifiers&Profile大綱
既然我們搞iOS app,在iOS Apps中選擇“certificates”。現在你可以產生一個新的App ID。每一個push App需要唯一的ID,因為push通知是發送給指定的app

在左側點擊“App IDs”,點擊“+”按鈕


(圖)添加App id
輸入下面的資訊:
● App ID Description:PushChat
● App Services Check the push Notification Checkbox
● Explicit App ID
你最好使用自己的BundleIdentifier-com.yoursite.PushChat-而不是使用我的。你還需要在Xcode中設定相同的Bundle ID。輸入這些資訊後,點擊“Continue”。將詢問你是否確定這些資訊,如果一切無誤後點擊“Submit”

哈哈!你已經成功註冊了一個新的App ID


(圖)App ID產生了
接下來幾分鐘,你還會產生SSL認證,App Server將使用這個SSL認證跟APNS建立一個安全連線。這個認證跟App ID相連。APP Server只能發送push通知給這個App ID的程式,而不是其他App。

產生App ID後,它看在列表中這個位置:


(圖)App id的展示

在列表中點擊這個PushChat App id,一個相關的視窗出現了:


(圖)App id詳情

注意在“Push Notification”這一行,兩個橙色的原點,“Configurable”分別在Develop和Distribution欄。這表示你的App ID可以用於push,但是你還需要設定一下。點擊“setting”按鈕,配置一下:


(圖)App id config

向下滾動到“Push Notification”這一段,選擇Develop SSL Certificate這一行的“Create Certificate”按鈕。


(圖)產生認證

“Add iOS Certificate”嚮導出現了:


(圖)嚮導
第一件事,詢問你產生Certificate signing Request,這一步你已經做完了,點擊“continue”。下一步,你該上傳CSR檔案。選擇剛才產生的CSR,點擊“Generate”。

產生SSL 憑證這將花費幾秒鐘,當它進行完成,點擊“Continue”。


現在點擊“Download”來擷取認證,它自動被命名為“aps_development.cer”


(圖)下載認證
正如你看到的,你已經有一個可用的認證,現在開發可以用push了。如果有需要,你還可以下載這個認證。開發人員push認證三個月有效。
當你發布app,重複上面的操作。擷取一個production 認證。步驟是相似的。production認證的有效期間是一年,你需要確保在期限前。
沒必要添加這個certificate到鑰匙串,當然你可以雙擊aps_development.cer檔案,你會發現它跟私密金鑰關聯起來了。
製造PEM檔案到目前位置,你有三個檔案:
● CSR檔案
● PushChatKey.p12私密金鑰檔案
● SSL認證(aps_development.cer)
將這三個檔案儲存好。你可以把CSR扔了,但是我覺得存著更容易一些。當認證到期,你可以使用那個CSR來產生一個新的認證。如果你產生一個新的CSR,還要匯出一個新的私密金鑰(p12)(安裝認證後,在鑰匙串中郵件匯出為p12)。通過複用CSR你可以使用已有的私密金鑰,僅.cer檔案會變化。
你得將認證和私密金鑰轉成更容易使用的格式。因為,我們的app Server是用PHP寫的,所以你需要將認證和私密金鑰合成為PEM格式。PEM格式對PHP來說更容易使用。如果你的app Server使用其他語言寫的,下面這些步驟不使用了。
你將使用OpenSSL命令列來操作。開啟命令列執行下面的步驟,進入認證的下載檔案夾,我的是案頭:
$ cd ~/Desktop/
轉換cer為pem檔案
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
轉換p12為pem檔案
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
Enter Import Password: 
MAC verified OK
Enter PEM pass phrase: 
Verifying - Enter PEM pass phrase: 
你第一次需要輸入p12的密碼,這樣opensll可以讀取它。接著你還為PEM需要輸入一個新的密碼。這兒我還使用“pushchat”,你可以使用更安全的密碼。
注意:如果你沒有輸入PEM密碼,openssl不會提示錯誤資訊,但是產生的pem檔案並沒有私密金鑰。
最後,合成認證和key為一個pem檔案
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
至此,檢查一下認證是否正常。執行下面的命令:
$ telnet gateway.sandbox.push.apple.com 2195
Trying 17.172.232.226...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is ‘^]‘.
上面是一個普通,沒有加密的串連到APNS Server。看到以上的資訊,說明你的mac可以串連到APNS。Ctrl + C關閉串連。如果得到錯誤訊息,確保防火牆對2195是放開的。
我們再串連一次,這次使用SSL認證和私密金鑰建立安全連線
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195   -cert PushChatCert.pem -key PushChatKey.pem
Enter pass phrase for PushChatKey.pem 
你應該看到一大堆輸出,這些是openssl想讓你知道後面在幹什麼。如果串連成功,你可以鍵入一些字元。輸入斷行符號,伺服器關閉了串連。如果建立串連的時候有問題,openssl會給出錯誤資訊,但是你得向上滾動尋找到並查看。

【注意】:有兩個APNS伺服器:沙箱伺服器用於測試,線上live用於生產模式。這裡,我們使用沙箱伺服器,因為我們的認證是development的,不是distribution的

-----------------------------------------------------------------------------------------------------------------------------

譯者加:

產生openssl認證和ck.pem的過程可以歸納為:


-----------------------------------------------------------------------------------------------------------------------------

製造provisioning profile

在iOS Dev Center 還沒有,點擊左側欄的Provisioning profiles按鈕,點擊“+”按鈕。


(+provisioning file)
Step1:選擇類型

選擇“iOS App development”選項按鈕,點擊continue


(provision develop)
Step2:配置

選擇PushChat app ID,可以保證provisioning profile準確的綁定了PushChat App


(選擇app id)
Step3:產生

選擇要包含的認證,這一步現在應該很常規。


(選擇認證)
Step4:選擇devices

選擇你想包含的裝置,


Step5:profile的名字

設定provisioning profile的名字為“PushChat Development”


(provisioning name)
你幾乎已經完成了,最後,點擊“Download”按鈕,下載最新產生的provisioning profile。
雙擊provisioning profile添加到Xcode或者拖拽到xcode中。
如果你是發布App,可重複相似的過程。產生一個Ad Hoc或者App Store發布的profile。

"iOS push全方位解析(二)【譯文】"——產生OpenSSL認證,Provisioning Profile

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.