Hatena::ブログ(Diary)

ggった結果 このページをアンテナに追加 RSSフィード Twitter

Google+ facebook Twitter

2013-09-02

Apple Push Notification Serviceを使ってiOSにプッシュ通知をするために必要な証明書の準備方法

WEBブラウザアプリと、AndroidiOSなどのスマートデバイスアプリでの大きな違いの1つとして「プッシュ通知」というのがあります。

まず、iOSでバイスへのプッシュ通知の仕組みです。
f:id:samril:20130903142549p:image
Androidと似ておりますが、iOSでもデバイスにプッシュするには Apple Push Notification service (以下 APNs )を経由しなければなりません。

そのため、まずは APNs にプッシュ通知を送る仕組みが必要になります。
その証明書の作り方を、今回は記述します。

1. プッシュ通知用の Certificate を作成する

アプリを1つでも app store へリリースしたことがある人なら分かると思いますが、まずはプッシュ通知用の Certificate が必要になります。
いつものように iOS Developer Center から Member Center へいきます。
f:id:samril:20130903143300p:image
Manage your Certificate, ... を選択します。

何を作成、管理するか選択します。
f:id:samril:20130903143258p:image
ここでは iOS App の Certificates を選択する。

新しい証明書を追加します。
f:id:samril:20130903143256p:image
画面右上にある「」を選択する。

今回作成するのは APNs の証明書です。
f:id:samril:20130903143336p:image
Apple Push Notification service SSL (****) をチェックして次へ
テスト用のを作りたければ Development
本番用のを作りたければ Production

今回は Production を選択しました。

次に、プッシュ通知を送りたいアプリを選択します。
f:id:samril:20130903143334p:image
ここでは Identifier が登録されているアプリのみ選択可能です。
ここに対象のアプリの Identifier が表示されていない場合は、新しく作成してください。

証明書を新しく作るにあたり Certificate Signing Request (以下 CSR )が必要になります。
f:id:samril:20130903143332p:image
このページでは作り方が英語で書いてありますが、以下で説明するので、読める人だけ読んでください。

まずは、キーチェーンアクセスを起動してください。
f:id:samril:20130903143331p:image
メニューにある キーチェーンアクセス > 証明書アシスタント > 認証局に証明書を要求 を選択します。

証明書アシスタントが起動します。
f:id:samril:20130903143401p:image
ユーザのメールアドレス:あなたのメールアドレス
通称:何の証明書にするか分かりやすいものにした方が後々便利です ex. MyappAPNs
CAメールアドレス:「必須」と出ていますけど、空欄でOKです
要求の処理:ここは「ディスクに保存」だけでOKです

そうすると CertificateSigningRequest.certSigningRequest という証明書が出来上がります。
上で設定した「通称」はどこいったの?と思いますが、キーチェーンアクセスの「鍵」の名前を見ると、そこに設定されています。

そして作られた CSRファイル をアップロードします。
f:id:samril:20130903143359p:image
ファイルを開いて選択

「Loading...」が終わると APNs 用の Certificate が作成されます。
f:id:samril:20130903143358p:image
これをダウンロードして、ダブルクリックで、現在使っている mac に登録しておきます。

これでプッシュ通知用の Certificate の作成が終わりです。


2. サーバ用PEMファイルの作成

自分のサーバから APNs にプッシュするために SSL証明書とそれにひもづく鍵 が必要になります。

まず、キーチェーンアクセスを開きます。
f:id:samril:20130903160320p:image
証明書の項目から、先ほど作成した証明書、および秘密鍵2つで
右クリック > "Apple Production/Development Push Service: *****"を書き出す... を選択します。

保存する名前は分かりやすいほうがよいです。
ex. MyappProd.p12
パスワードは任意で(後で使うので覚えやすいやつをオススメ)

証明書用、秘密鍵用、の計2つの p12 ファイルができたと思います。

最後にコマンドラインを使い、サーバに設置するための PEMファイル を作成します。

まず、証明書用のファイルを作ります。

$ openssl pkcs12 -clcerts -nokeys -out {任意のファイル名}.pem -in {上で作成した証明書p12ファイル}.p12
Enter Import Password:
MAC verified OK

パスワードを求められるので、上記で設定したキーチェーンアクセスで書き出した時のパスワードを入力する。
作成するファイル名は、例えば MyappProd.pem など p12ファイル と同じ名前でも良い

次に、秘密鍵のファイルを作成します。

$ openssl pkcs12 -nocerts -out {任意のファイル名}.pem -in {上で作成した秘密鍵p12ファイル}.p12
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

パスワードを求められるので、分かりやすいパスワードを入力する。
作成するファイル名は、例えば MyappProdKey.pem など p12ファイル と同じ名前でも良い

この時点で次の4つのファイルになっていると思います。
証明書.p12
証明書.pem
秘密鍵.p12
秘密鍵.pem

次に秘密鍵パスフレーズを解除します。
サーバプログラム上でパスフレーズを記入する場合は、不要になります。

$ openssl rsa -in {秘密鍵}.pem -out {公開鍵}.pem
Enter pass phrase for kurashito-key.pem:
writing RSA key

パスワードを求められるので、上記で設定したパスワードを入力する。
作成するファイル名は、例えば MyappProdKeyNoenc.pem など 元となる秘密鍵.pem と別の名前が良い

最後に 証明書.pem と 公開鍵.pem の2つのファイルを1つのファイルとしてまとめます。

$ cat {証明書}.pem {公開鍵}.pem > {あるアプリのAPNs用証明書だと分かりやすい名前が望ましい}.pem

作成された PEMファイル をサーバおけば、 APNs にプッシュすることができます。

http://www.st-hatena.com/users/sa/samril/user_p.gif有効期限は1年だぞ!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/samril/20130902/1378198909
リンク元