Apple Push Serviceで使うp12形式の証明書と秘密鍵があるのですが、それをpem形式に変換して使うことがあります。毎度のことながら混乱してしまうので作成フローをまとめてみました。私の場合、Appleの証明書更新に伴いGaurunで使う証明書を作り直そうと思ったときにハマってしまい痛い目を見たのでそのメモです。
see also:
メルカリのプッシュ配信システムGaurun(オープンソース)を使ってプッシュ送信環境を構築する方法
https://lineocean.com/2017/04/14/82/
Contents
Apple Developerにて各種証明書の更新を行う
下記記事がわかりやすいので書いてある内容を確認して更新しましょう。
https://qiita.com/natsumo/items/d5cc1d0be427ca3af1cb
色々依存があるので滞りなく設定しなくてはなりません。しかしAppleの証明書更新を毎年行うのは地味に大変なのでどうにかして欲しいポイントではあります。
APNsの証明書をローカルにインストールする
ダブルクリックして登録します。キーチェーンアクセスから確認できます。
証明書、秘密鍵それぞれを書き出す
Apple Push Services:${bundleId} みたいな表記があると思うので、それを展開して証明書、秘密鍵それぞれで右クリック > …書き出す を選択してp12ファイルを作成します。その際パスワードの入力は任意です。
ここで間違えてはいけないのは、
1.証明書
2.秘密鍵
それぞれのp12ファイルを作成する必要があるというところです。
一見すると証明書だけ作ればどうにかなる感じがしますがそんなことはなく、正しいフローでpemファイルを作ったとしても動かないという大きな混乱を招くので注意が必要です。
ここでは、
1.p12証明書:pushcert.p12
2.p12秘密鍵:pushkey.p12
という名前で保存しておきます。
pem形式に変換する
下記のように行います。
p12証明書からpem証明書を作成
1 |
openssl pkcs12 -clcerts -nokeys -out cert_aps_prod.pem -in pushcert.p12 |
p12秘密鍵からpem秘密鍵を作成
1 |
openssl pkcs12 -nocerts -out seckey_aps_prod.pem -in pushkey.p12 |
このとき、パスワードの入力が求められますので適当に入力してください。一番最初に求められるのは、p12ファイルを出力したときにキーチェーンアクセスで設定したパスワード、二番目に求められるのは秘密鍵生成に必要なパスワードになります。
この時点で証明書と鍵のpemファイルができたので完了かと思いきや、gaurunではpem公開鍵ファイルが必要になってくるので注意が必要です。
pem公開鍵を作成する
1 |
openssl rsa -in seckey_aps_prod.pem -out pubkey_aps_prod.pem |
前のステップで入力したパスワードを入力し出力します。
これで必要なpemファイルの出力が完了しました。現時点で下記があれば問題ありません。
1.pem証明書:cert_aps_prod.pem
2.pem秘密鍵:seckey_aps_prod.pem
3.pem公開鍵:pubkey_aps_prod.pem
正しく証明書と公開鍵のペアができているか確認する
1 |
sudo openssl s_client -connect api.push.apple.com:443 -cert cert_aps_prod.pem -key pubkey_aps_prod.pem |
エラーがなければ問題ありません。
以上です。