iosのpush通知用証明書期限切れ対応
過去にリリースしたiPhoneアプリのPush通知が気づいたら
送信できていなかったという自体が発生。
原因はPush通知用の証明書が期限切れになっていたことだったので
新たに証明書を作成して対応した。
対応方法は最初にPush通知の設定をする時と同じなんだけど、
久々で手順を忘れたりしたので備忘録として。
手順
-
証明書署名要求ファイル作成
キーチェーンアクセス.appから
以下のようにして証明書アシスタントを起動するメールアドレスと通称を任意に設定してディスクに保存、
鍵ペア情報を指定にチェックを入れて続ける
そのまま道なりに行くとデスクトップ上に
「CertificateSigningRequest.certSigningRequest」が出来る -
iOSDevCenter側作業
- iOSDevCenterのサイトにいって対象のApp IDを選択、editに入る
- developmentとproductionのcreate certificate...を選択してさっき作ったcertSigningRequestをアップロードする
- certificateファイルが出来るのでダウンロードする
-
キーチェーンアクセス.app作業
- ダウンロードしたcerファイルをダブルクリックするとキーチェーンアクセスにappleの署名済み証明書が登録される
- キーチェーンアクセスの自分の証明書タブを選択
- 証明書と鍵を選択した状態で2個を書き出すを選択。設定はデフォでOK
-
pemファイルの作成
-
作成した*.p12ファイルを以下のコマンドでpem形式に変換
openssl pkcs12 -in 証明書名.p12 -out 証明書名.pem -nodes
-
-
Push通知を行うサーバ側作業
作成したpemファイルをpush通知を利用するサーバの所定の場所にアップロード
以上ですが、証明書の有効期限が1年という
絶妙に忘れてしまいそうなタイミングなので、
なんらかの監視の仕組みがあった方がいいかもです。
有効期限チェック方法
以下のコマンドで証明書の有効期限が確認できる
openssl x509 -inform pem -in APS_Development.pem -text
-
オプション
- inform : 入力ファイルの書式(今回はpem形式)
- in 入力する証明書のファイル名
- text テキスト形式で表示する
なので、これをgrepしてsedして日付を抽出して、
30日前になったらアラートメール送るとか
仕組みを作ればとりあえず監視できるかと。
$ openssl x509 -inform pem -in APS_Development.pem -text | grep 'Not After' | sed -e "s/^.\{24\}//"
Mar 3 10:26:10 2015 GMT