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

來源:互聯網
上載者:User

標籤:安裝   rac   變化   成功   pen   pem   菜單   工作   --   

  這是一篇來自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-而不是使用我的。你還需要在www.yyzx66.cn/ Xcode中設定相同的Bundle ID。輸入這些資訊後,點擊“Continue”。將詢問你是否確定這些資訊,如果一切無誤後點擊“Submit”
  
  哈哈!你已經成功註冊了一個新的App ID
  
  (圖)App ID產生了
  
  接下來幾分鐘,你還會產生SSL認證,App Server www.hsl85.cn/將使用這個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 SSLwww.senta7.net Certificate這一行的“Create Certificate”按鈕。
  
  (圖)產生認證
  
  “Add iOS Certificate”嚮導出現了:
  
  (圖)嚮導
  
  第一件事,詢問你產生Certificate signing Request,這一步你已經做完了,點擊“continue”。下一步,你該上傳CSR檔案。選擇剛才產生的CSR,點擊“Generate”。
  
  產生SSL 憑證這將花費幾秒鐘,當它進行完成,點擊“Continue”。
  
  現在點擊“Download”來擷取認證,它自動被命名為“aps_www.huacairen88.cn 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 -in www.yghrcp88.cn form 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.