iOS プッシュ通知の証明書の交換手順 (Amazon SNS利用) 2019

# 概要

iOSのプッシュ通知の証明書の有効期限は1年と1ヶ月なので、年1回交換が必要です。
プッシュ通知の配信は Amazon SNS経由で配信しています。

証明書の更新のおおまかな流れは以下。

1. Macで手順2で必要な証明書の要求ファイル(.certSigningRequest)を用意
2. Apple Developerサイトから手順1のファイルを使ってAPNsの証明書(.cer)を作成しダウンロード
3. Macで証明書と鍵であるp12ファイル(.p12)を書き出し
4. 上記証明書をAmazon SNSに設定

#[手順1] Macで手順2で必要な証明書の要求ファイル(.certSigningRequest)を用意

まず、手順2で使用する証明書の要求ファイルをあらかじめ用意します。

Apple ヘルプ
https://help.apple.com/developer-account/#/devbfa00fef7

Macで「キーチェーンアクセス」のメニューの「証明書アシスタント」⇢「認証局に証明書を要求」
![image1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/09892ebb-f212-0d7f-a5da-7e416582b346.png)


「ユーザーのメールアドレス」に、自分の開発用のメールアドレスを入力。
「通称」は何でも良いので、公式のヘルプに従い分かりやすく入力。
（公式のヘルプは「Gita Kumar Dev Key」としている）
ディスクに保存を押してローカルに保存してください。
![image1-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/05e0622a-b154-cc39-0a97-a01e27a9c4dc.png)


#[手順2] Apple Developerサイトから手順1のファイルを使ってAPNsの証明書(.cer)を作成しダウンロード

以下のAppleのDeveloperサイトの証明書一覧にアクセス。
https://developer.apple.com/account/resources/certificates/list


「＋」ボタンから押して新しい証明書作成ページへ。
![image2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/ff041b19-1cfe-bca5-a2dc-ae4f3a003e42.png)


「Apple Push Notification service SSl (Sandbox & Prouction)」を選択。
![image2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/1d85eebe-853f-7cac-0391-8d43f93a58c7.png)

App IDを対象のアプリケーションのIDを選択。
![image2-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/4c8230b5-b961-d95e-2808-fc1cb53f5556.png)


先程の手順１で作成した証明書の要求ファイルを選択。
![image2-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/e32c223c-f62d-3824-dd23-2d7a03e03ab2.png)


完了すると、右上のダウンロードボタンからダウンロードしてローカルに保存してください。
本番をステージング用など複数個やると思うので、
「aps-prod.cer」、「aps-stg.cer」のように名前をつけておくと良いでしょう。

![image2-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/9656137c-c588-fabc-cd28-3c3bd10e4cca.png)

一覧に有効期限が来年のものが追加されています。


#[手順3] Macで証明書と鍵であるp12ファイル(.p12)を書き出し

Amazon SNS に設定する証明書と鍵であるp12ファイルを作成します。
まず、さきほど手順２で作成した「*.cer」ファイルをダブルクリックします。

![image3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/a6c7c3a3-6685-f4f5-1545-4e6873ea186d.png)


ダブルクリックすると、「キーチェーンアクセス」に表示されます。
![image3-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/5f0102ae-d12a-82d6-c2af-dfa7473e11cb.png)

対象の証明書を右クリックして、「Apple Push Service * を書き出す」を選択。
![image3-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/2d9cc991-a35a-41eb-36ff-18e6a60f5fbf.png)


パスワードは任意の内容で設定してください。
※また、それとは別に自身のMacのアドレスのパスワードを聞かれるので混同しないように。
![image3-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/0d775872-d154-b8f4-1fdc-f28e182374bd.png)


書き出し完了。
![image3-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/9d4d8c4e-278b-b6f4-1736-f5748e009ef6.png)


#[手順4] 証明書(p12)をAmazon SNSに設定

Amazon SNSに設定します。
![image4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/370b7d7f-29e1-8193-01bc-c25f2135c114.png)


編集ボタンをクリック。
![image4-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/460a10dc-3a22-5573-4d8f-a9fcfb943330.png)


本番ではなく開発時に使用するものは、「サンドボックスでの開発に使用されます」をチェック。
本番の方は、チェックしないでください。
「プッシュ通知タイプ」は、「iOSプッシュ証明書」。
「証明書」の「ファイルの選択」に、先程のp12ファイルを選択。
「パスワード」に先程の証明書のパスワードを入力。
「認証情報をファイルから読み込む」ボタンをおして、
間違いがないかを確認して、「変更の保存」を押して完了です。
![image4-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/7892d6c2-85e6-1280-e3f9-6f09a2230493.png)

有効期限が更新される。
![image4-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70150/c35c6ce9-4931-0e75-8325-84ace6d00123.png)


更新後、プッシュ通知が問題なく配信されているか確認して完了。

以上