用意するもの
AppleID
サーバ
appIDはすでに作られてるものとします。
証明書を要求するための準備
「アプリケーション」 ->「ユーティリティ」で
キーチェーンアクセス.app を起動
キーチェーンのメニューから環境設定を呼び出す。
「メニュー」 -> 「環境設定」
証明書のタブを選択する
以下の項目のチェックを外す
- オンライン証明書状況プロトコル(切)
- 証明書失効リスト(切)
認証局に証明書を要求を呼び出す。
「キーチェーンアクセス」 -> 「証明書アシスタント」
->「認証局に証明書を要求」
閉じる。
証明書アシスタントに以下を入力
- ユーザーのメールアドレス : 開発者のメールアドレス
- 通称:適当な名前、何でもよい
- CAのメールアドレス : 無記入でよい
- 要求の処理 : ディスクに保存 と 鍵ペア情報を指定にチェック
証明書要求の保存
CertificateSigningRequest.certSigningRequest をデスクトップに保存するように設定
鍵ペア情報
完了
対象のappIDに証明書を登録する
appIDをクリック
appIDをクリックするとこんな感じに開く。
Editをクリックして次へ
Push Notificationを選択する
Push Notificationを選んで「Create Certificate」を選ぶ
はじまり
作った証明書リクエストを選択する
先ほど作成した「CertificateSigningRequest.certSigningRequest」を選択する
選択したら「Generate」する
証明書が出来上がるのでダウンロード
ダウンロードしたCSRとキーチェーンを紐付ける
ダウンロードしたファイルをダブルクリックすると、キーチェーンに登録される。
サーバに登録
秘密鍵を書き出す
キーチェーンを開いて、先ほど作った証明書にフォーカスを当てる。
左下の「分類」で「証明書」でフィルターすると、フォーカスが当たってた証明書に▼が表示されるようになる。
展開すると秘密鍵が見れるようになる(ここで色々ハマったw)
p12形式で「xxx_production.p12」って感じで書きだす。
書き出したら以下コマンドを使ってpem形式に変換する。ついでにrsa形式にもする
openssl pkcs12 -in [書きだした秘密鍵].p12 -out [なんでも良い].pem -nodes -clcerts
openssl rsa -in [変換したファイル名].pem -out [変換したファイル名]_noenc.pem
キーチェーンに登録している証明書を書き出す
キーチェーンで登録した証明書にフォーカスをあてて、右クリック。
「書き出す」を選択する。
フォーマットに「.pem」を選択する
証明書ファイルの結合
作った秘密鍵と証明書を連結する
cat [証明書].pem [秘密鍵]_noenc.pem > [わかりやすいファイル名].pem
サーバに配置
最終的に出来たファイルをftpツールでもなんでもいいので、サーバの適当なディレクトリに配置する(アプリによって異なると思うので割愛)
総括
とりあえず証明書はめんどい!!
APNsに証明書設定してもエラーになるからなんでやと思ったら秘密鍵が必要だったり、秘密鍵がどこにあるかわからず右往左往したり…
微妙にAppleさん変わってたりするところが素人には厳しいところ
お世話になったサイト
APNSのpemファイル作成用のシェル関数
Apple Push Notification Serviceを使ってiOSにプッシュ通知をするために必要な証明書の準備方法
[iPhone] APNs プッシュ通知(1)デバイストークンの取得
[iPhone] APNs プッシュ通知(3)リモート通知の取得