To extract the contents of a PKCS12 file you can use file_get_contents as well:
<?
$certs = array();
$pkcs12 = file_get_contents( "pkcs12file.pem" );
// No password
openssl_pkcs12_read( $pkcs12, $certs, "" );
print_r( $certs );
?>
Output is:
Array
(
[cert] => --- BEGIN CERTIFICATE ---
//snipsnip//
--- END CERTIFICATE ---
[pkey] => --- BEGIN RSA PRIVATE KEY ---
//snipsnip//
[extracerts] = Array
(
)
)
openssl_pkcs12_read
(PHP 5 >= 5.2.2)
openssl_pkcs12_read — PKCS#12 認証ストアをパースして配列形式にする
説明
bool openssl_pkcs12_read
( string $pkcs12
, array &$certs
, string $pass
)
openssl_pkcs12_read() は、 pkcs12 で指定した PKCS#12 認証ストアをパースして certs で指定した配列に格納します。
パラメータ
- pkcs12
-
- certs
-
成功した場合に、ここに認証ストアデータが格納されます。
- pass
-
PKCS#12 ファイルのロックを解除するためのパスワード。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
openssl_pkcs12_read
bromatom at directbox dot com
01-Sep-2008 10:18
01-Sep-2008 10:18
mmacia at gmail dot com
26-Dec-2007 03:13
26-Dec-2007 03:13
The correct way to read a PKCS#12 file is:
<?php
$p12cert = array();
$file = '/home/mmacia/mycert.p12';
$fd = fopen($file, 'r');
$p12buf = fread($fd, filesize($file));
fclose($fd);
if ( openssl_pkcs12_read($p12buf, $p12cert, 'passphrase') )
{
echo 'Works!';
print_r($p12cert);
}
else
{
echo 'Fail';
}
?>
