x-ite's diary

覚え書きです。想定読者は俺

APNs Certiticate Flow

何度やっても毎回手間取るので未来の俺へメモ。
PyAPNS使用時のCert(PEM)ファイル生成。

iOS Certificates (Production)を
https://developer.apple.com/からつくる

ダウンロードしたCertificateをダブルクリックしてキーチェーンへ登録。

キーチェーンへ登録済みのCertificateを証明書と秘密鍵を同時に書き出す。
別々でもいいが2つのファイルからそれぞれPEMファイルをつくることになるので前者が便利。

書き出すときにパスフレーズも設定できるが、設定した場合は(cert.pem|key.pem)ファイルつくるときに入力必要。

path=$1
dirname="${path%/*}/"
basename=${path##*/}
filename=${basename%.*}
extension=${basename##*.}

pemcertfile="${dirname}${filename}-cert.pem"
pemkeyfile="${dirname}${filename}-key.pem"
pemkeynoencfile="${dirname}${filename}-key-noenc.pem"
pemfile="${dirname}${filename}.pem"

echo "Crate cert"
openssl pkcs12 -clcerts -nokeys -out $pemcertfile -in $path

#Input import password if necessary

echo "Crate privatekey"
openssl pkcs12 -nocerts -out $pemkeyfile -in $path

#Input import password if necessary
#Input PEM password

echo "Write RSA key"
openssl rsa -out $pemkeynoencfile -in $pemkeyfile

#Input PEM password you input 

echo "Concat key and cert"
cat $pemcertfile $pemkeynoencfile > $pemfile