PHP で pkcs12 形式の SSL 証明書を pem 形式に変換
ApnsPHP でプッシュ通知するのにサーバ側にPEM形式の証明書が必要。
https://code.google.com/p/apns-php/wiki/CertificateCreation
証明書を更新するたびに openssl コマンドを打つのも面倒なので、PHP プログラム内で作成できるようにした。ついでに秘密鍵のパスフレーズもリセットしている。
<?php // pkcs12 形式の証明書を読込 (source.p12) $pass = '証明書作成時のパスフレーズ'; $pkcs12File = 'source.p12'; $pkcs12 = file_get_contents($pkcs12File); $certs = array(); openssl_pkcs12_read($pkcs12, $certs, $pass); // パスフレーズをリセット $pkey = null; $newPass = null; openssl_pkey_export($certs['pkey'], $pkey, $newPass); // PEM 形式で保存 (output.pem) $pemFile = 'output.pem'; file_put_contents($pemFile, $certs['cert'] . $pkey);