iOSプッシュ通知用証明書の更新方法

iOSアプリの開発者ならば経験する（かもしれない）年１回訪れる作業。それがプッシュ通知用証明書の更新。
これを怠るとアプリにプッシュ通知が届かなくなり、お客様や担当営業ないしはサポセン担当者からのクレームが大ハッスル。
いざ慌てて更新しようにも、やり方を忘れてしまったり、Appleの開発者向けサイトのレイアウトが変わっていたりとさぁ大変。

ここはそんな迷える子羊達の救いの手となるべくプッシュ通知用証明書の更新方法をメモしておきます。（※新規に作る方法はここには記載されてません）

# 1. 証明書の要求ファイル(CSR)を作成する
Macでキーチェーンアクセスを起動し、メニュー「キーチェーンアクセス」→「証明書アシスタント」→「認証局に証明書を要求...」を実行します。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/291dd298-a134-8239-731a-1b4ef43165b7.png)

証明書アシスタントが起動したら、必要な項目を入力し、「続ける」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/72e1787f-9527-7d2f-855f-7a2e057960a2.png)

`ユーザーのメールアドレス：開発者用のメールアドレス`
`略称：なんでも（キーチェーンアクセス上に表示される名称になる）`
`要求の処理：「ディスクに保存」を●、鍵ペア情報を指定に☑`

証明書の要求ファイル(CSR)の保存ダイアログが表示されるのでわかりやすい場所に保存します。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/7bfdae64-6a66-74ca-9a04-dde8252cfc67.png)

鍵ペア情報はデフォルトのままで。
![スクリーンショット 2016-04-11 10.31.02.png](https://qiita-image-store.s3.amazonaws.com/0/76153/d88d9212-f1ac-1110-9b28-f31aa8229b4c.png)

# 2. Apple Developerで証明書を作成する
Apple Developerにログインし、「Account」をクリックします。
![スクリーンショット 2016-04-11 10.36.22.png](https://qiita-image-store.s3.amazonaws.com/0/76153/94c78334-cbe8-9318-b4c9-8e0441efc2a2.png)

「Certificates, IDs & Profiles」をクリックします。
![スクリーンショット 2016-04-11 10.49.12.png](https://qiita-image-store.s3.amazonaws.com/0/76153/9d704c5c-a27e-0e68-1176-e09476462d12.png)

「iOS Certificates」画面右上の「＋」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/5e0b760a-1409-7e82-0c01-6cbec5163126.png)

「Add iOS Certificate」画面中部にある「Production」カテゴリから「Apple Push Notification service SSL (Sandbox & Production)」を選択し、「Continue」をクリックします。
![スクリーンショット 2016-04-11 10.55.41.png](https://qiita-image-store.s3.amazonaws.com/0/76153/1c2414fe-4279-e2f5-8425-a5f74c266899.png)

対象アプリのApp IDを選択し、「Continue」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/f7e0adea-4b07-416d-1783-f1d59d9bc49a.png)

「About Creating～」画面で「Continue」をクリックすると証明書の要求ファイル(CSR)が要求されるので、1(冒頭)で作成したCSRファイルを指定します。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/f55c593a-f290-c78d-2d72-e06579d99dbd.png)

次画面で「Download」をクリックすると新しいプッシュ通知用証明書(CER)がダウンロードできるので、それをプッシュ通知用のサーバーに登録すれば完了です。

App IDからはこのように新しい日付でプッシュ通知用の証明書が登録されているのが確認できます。
![スクリーンショット 2016-04-11 11.00.01.png](https://qiita-image-store.s3.amazonaws.com/0/76153/20f8c3e9-d7d8-0768-d4a4-6d43f5c7f5de.png)
※ちなみに新しい証明書を追加しても以前の証明書は期限が切れるまで使用できます。なので、新しい証明書を追加したからといって、すぐに本番環境に適用する必要はありません（既に期限が切れているときは別ですが）。慌てずゆっくり作業しましょう（笑）

# 番外. p12ファイルを作成する
プッシュ通知用のサーバーにどうやって証明書を登録し、配信しているのかは、各々サーバー設計によって異なります。
当方はp12ファイルで運用していますので、その作り方も合わせて記載します。

まず、Mac上で2で最後にダウンロードしたプッシュ通知用証明書(CER)をダブルクリックすると、キーチェーンアクセスに取り込まれます。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/71cbc21d-bf6a-1708-d4ef-cfcc701ce665.png)

取り込まれた証明書を右クリックし、「Apple Production iOS Push Services:（App ID）を書き出す...」を実行します。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/c8efc095-6585-d62f-78cb-f005777c9aa4.png)

保存ダイアログが表示されるので、フォーマットに「個人情報交換(.p12)」を指定し、わかりやすい場所にp12ファイルを保存します。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/f92688b6-5f0a-c29b-0f75-54128171d75a.png)

「書き出した項目を保護するために使用されるパスワードを入力」が表示されるので、もしプッシュ通知配信時にパスワード認証している場合は、そのパスワードを入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/76153/8af4b11e-0c92-e61a-778d-f9f68dc1f129.png)
ここでパスワードを間違えてしまうと、新しいプッシュ通知用証明書で**プッシュ通知が送信できません**ので慎重かつ適切に入力しましょう。

この後、証明書を書き出すためのパスワードが聞かれたら、現在Macにログインしているパスワードを入力します。

書き出したp12ファイルをプッシュ通知配信用サーバーに配置して完了です。

お疲れ様でした！