Think Big Act Local

iPhone開発を軸にブレブレの記事を書いていきます。

PUSH通知機能を持ったiPhoneアプリを作る(証明書の作成)

前回の記事に引き続きPUSH通知ネタです。
前回はクライアント側コードの記述方法について触れましたが、今回は証明書発行の手順をまとめます。
証明書関連は何かとややこしい部分が多いので、後で迷わないよう詳細に書きます。

前提条件

PUSH通知に使うアプリのProvisioning Fileは作成済という前提で手順をまとめます。Team Provisioning(.*)でないアプリ固有のProvisioning Fileをまだ作成してない方は、以下リンクを参考にご用意下さい。
iPhone Push通知のすすめ

また、PUSH通知の設定は開発環境と本番環境で異なる点が多いのですが、
今回は開発環境での準備を整えていきます。
本番環境だと通知がうまくいかない例 もありますので、その点はご注意下さい。

PUSH通知に使うAppleの証明書の準備

ブラウザ操作

  1. iOS Dev Center のCertificate, Identifiers & Profiles を選択

  2. Identifiers > App IDs と選び、PUSH通知を有効にするProvisioningを選ぶ

  3. Push NotificationsのステータスがConfigurableであることを確認し、Settingsを押す

  4. Development / Production の内、用途にあった方をCreate Certificateする

  5. CSR Fileを作りましょう!的な画面が出るので、気にせずContinueする

  6. Upload CSR File と書かれた画面が出る。ブラウザ操作はここで一度休憩となる

Mac操作

  1. キーチェーンアクセス > 認証アシスタント > 認証局に証明書を要求
    メールアドレスはiOSデベロッパアカウントを、
    要求の処理は「ディスクに保存」を指定します。
    後は手順通りに進めていけば鍵ファイルを保存できます。
    CertificateSigningRequest.certSigningRequestという名前で保存される)

ブラウザ操作

  1. 手順6の画面でいま作った鍵ファイルを読み込み、generateする

  2. 鍵がDownloadできるようになっているので、適当な場所にダウンロードする
    aps_development.cerという名前で保存されているはずです。

Mac操作

  1. ダウンロードした鍵ファイルをダブルクリックし、キーチェーンに登録 キーチェンでの表示名はApple Development IOS Push Serviceのはずです。

  2. p12ファイルの書き出しを行う キーチェーンアクセス > 「自分の証明書」を選択します。
    Apple Development IOS Push Serviceを右クリック > 書き出し を選択します。
    ファイル名は任意ですが、ここではserver_certificates_bundle_sandbox.p12と設定します。
    パスワードが要求されるので、任意のパスワードを設定しましょう。

  3. ファイル形式をp12からpemに変換する ターミナルで以下のコマンドを入力します。
    パスワードを聞かれた場合は上記の手順で設定したパスワードを入力しましょう。

$ openssl pkcs12 -in server_certificates_bundle_sandbox.p12 -out server_certificates_bundle_sandbox.pem -nodes -clcerts

ここまででAppleの証明書の準備をすることができました。

PUSH通知に使うサーバの証明書の準備

続いてサーバの証明書の用意を行います。

  1. Development / Productionの用途に応じ、以下からダウンロードする
用途 ダウンロードリンク
Development https://www.entrust.net/downloads/binary/entrust_2048_ca.cer
Production https://www.entrust.net/downloads/binary/entrust_ssl_ca.cer

2.上記でDLしたファイルをダブルクリックしてキーチェーンに保存

3.左上でシステムルート、左下で証明書を選ぶ

4.Entrust Root Certification Authorityを探して右クリック > 書き出し この時形式は.pem形式で書きだします。

以上でサーバの証明書の準備も完了です。

おわりに

証明書が準備できたら次はサーバ側・クライアント側を実装することになるでしょう。
その際には以下のリンクが参考になるかと思います。

クライアント側(Objective-C
サーバ側(PHP

参考リンク

関連書籍

iOS開発におけるMVCパターンをまとめた良書。
基礎的な文法を抑えられたくらいの方にオススメです。