[2021年版/BigSur対応]iOSPush通知証明書の更新方法


## はじめに
iOSエンジニア年1回の恒例行事、iOSのPush通知証明書の更新方法についてまとめました。
OSがCatalinaからBig Surに変わり、キーチェーンアクセスのUIが微妙に変わって苦戦したので、備忘録としてメモを残しておきます。

作成日: 2021/08
Mac OS: Big Sur 11.4

## STEP1. ローカルPCで証明書の要求ファイルを作成する

- キーチェーンアクセスを起動します。  
- メニュー「キーチェーンアクセス」→「証明書アシスタント」→「認証局に証明書を要求...」を実行します。
![キーチェーンアクセスから認証局に証明書を要求.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/137970b2-0956-6dad-d3c3-7955b331d186.png)

- 証明書アシスタントが起動するので、証明書情報を記入します。
    - ユーザーのメールアドレス：開発者のメールアドレス
 - 通称： 適当な名前を入力。キーチェーンアクセス上に表示される名称となる
 - CAのメールアドレス: (未記入)
 - 要求の処理：「ディスクに保存」を選択
 - 「鍵ペア情報を指定」にチェック  
![証明書情報.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/54eabee3-0bfc-236c-9671-fad9eea7fb14.png)

- 証明書要求ファイルの保存先を選びます。
![保存先指定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/5d8e712f-c3ca-36e0-a05e-0685ee7f36b4.png)


- 公開鍵・秘密鍵ペアを作成するための情報を選択します。(特に指定がなければ、初期値で作成して問題ないです。)
![鍵ペア情報.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/b61d7c08-73d5-6636-8887-c2e1ac58fd34.png)

- これで証明書要求ファイルが作成されます。
![設定完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/46e0f32f-300d-3d51-35a2-28f52c03d448.png)

## STEP2. Apple Developerで証明書を作成する
- safariから[Apple Developer](https://developer.apple.com/jp/)にアクセスします。
- 「Certificates, Identifiers & Profiles」を開きます。
![Apple Developer .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/8d82f9e4-8cdc-233f-752e-0df52fe72a5b.png)
- 「Identifiers」からPush通知証明書を更新したいアプリのIdentifierを選択します。
- 「Push Notifications」のEditをクリックします。

![Edit_Your_App_ID_Configuration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/122d0320-d6aa-5b27-a6b7-1c7dd1d2923b.png)

- 「Create Certificate」をクリックします。
![Create_Certificate.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/f44a3413-2bcf-69d2-f598-a66052836d2d.png)

- プラットフォームを選択、STEP1で作成した証明書要求ファイルをアップロードして、「Continue」をクリックします。
![スクリーンショット 2021-08-17 19.08.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/605e975c-659d-ed29-6512-1a3896439c28.png)


- 問題なければこれで証明書が発行されます。  
先程の画面に証明書が新しく追加されているので「Download」からダウンロードします。
![Download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/00d0c8a1-952e-8d59-83a8-e1ba9ee6c71e.png)



## STEP3. p12ファイルに変換する

firebaseのCloud Messaging等でPush通知を行なっている際は、証明書をp12ファイルに変換する必要があります。

- STEP2でダウンロードした証明書ファイルをキーチェーンアクセスで開きます。

**※注意※ ファイルを開く際にあらかじめキーチェーンアクセスを開いておき、「ログイン」タブを必ず選択したうえで証明書ファイルを開くこと。**
![keycainaccess.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/96235d1f-f3b9-6c51-799e-38a86fe77d9e.png)

グローバルなキーを保存しているタブ(システム、システムルートなど)を開いた状態で、証明書ファイルを開こうとすると正しく証明書ファイルが展開されません。

- ダウンロードした証明書と、証明書に紐づいている鍵をどちらも選択した状態で、「書き出す」を実行します。
<img alt="スクリーンショット_2021-08-17_19_11_11-2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/339ea6f6-4b45-f351-cb37-f29d09f7db21.png" width="750">

- p12を選択して作成完了
<img alt="convert_p12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539259/a493b06c-e153-4cf0-8e19-e8f1c57a3fdf.png" width="750">


## まとめ
証明書をキーチェーンアクセスで開く際、グローバルなキーを保存しているウィンドウを開きっぱなしにしていたことになかなか気づけず、小一時間ハマりました... ~~開いているウィンドウで、ローカル・グローバルが切り替るの分かりづらすぎませんか…~~
来年はスムーズに更新できますように！