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);