iOSでのPush通知(Provider側)を実装するのにいろいろ証明書やら鍵を作成するので
その時に調べた内容をメモしておきます。
まずは鍵と証明書の種類について
.key : 秘密鍵(Private Key)
.csr : 証明書発行要求(CSR : Certificate Signing Request)
.crt : 証明書(CRT : Certificate)
.crl : 証明書失効リスト(CRL : Certification Revocation List)
これらには、DER(Distinguished Encoding Rules)形式 と PEM(Privacy Enhanced Mail)形式がある。PEM形式は、DER形式(バイナリ)をBASE64で可視化したもの。
これを踏まえてProviderにインストールするSSL証明書と鍵を作成する。
apns-dev-cert.p12 : 証明書から作成したもの
apns-dev-key.p12 : 秘密鍵から作成したもの
① PKCS #12 ファイルapns-dev-cert.p12 から SSLサーバ証明書(EV SSL証明書)を取り出し、apns-dev-cert.pemに保存
$ openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
② PKCS #12 ファイルapns-dev-key.p12 から秘密鍵を取り出し、暗号化せずにapns-dev-key.pem に保存
$ openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
③ Apache で ssl を使用する場合、起動時に秘密鍵のパスワードを聞いてくるので,途中でとまってしまいます。
server.key を復号化して、パスワードを入力しなくても秘密鍵を使用できるようする。
$ openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
④ apns-dev-cert.pem と apns-dev-key-noenc.pemを連結してapns-dev.pemに吐き出す
$ cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
apns-dev-key-noenc.pem, apns-dev.pem をサーバの適切な場所へ放りこんでおく。
Push通知は実装以上にこの辺が面倒だな。