cer証明書、p 12証明書関連
1504 ワード
最近銀聯の携帯電話のチャージのセットをして、クライアントのサーバーの端はいっしょにして、とても疲れます.相手は2つの証明書をあげました.A.p 12とB.cerです.A.p 12の秘密鍵は簡単に入手できますが、B.cerの公開鍵はなかなか手に入らず、半日も調べてしまいました.の
原来p 12にも公開鍵があります...
p 12から鍵を取り出す:
a.cerから公開鍵を取ると言ったら、同僚が調べてくれたのです.
実はコード変換をしただけです...
cer証明書はバイナリ符号化されているので、その内容を取得してからサブトランスコードすればいいです.
cer証明書はp 12からエクスポートされ(cerはバイナリであり、p 12はbase 64であり、ネット上でder(バイナリ)を調べてpem(base 64)を回転することができる)、コマンドをエクスポートする:
keytool -export -alias p12client -keystore dlt.p 12-storetype PKCS 12-storepassパスワード-rfc-file p 12.cer
cer公開鍵の読み出しは次のようになります.
明日も仕事頑張ります!
原来p 12にも公開鍵があります...
p 12から鍵を取り出す:
$p12cert = array();
$file = "cert/A.p12";
$fd = fopen($file, 'r');
$p12buf = fread($fd, filesize($file));
fclose($fd);
openssl_pkcs12_read($p12buf, $p12cert, password) ;
それから取ればいいです.のa.cerから公開鍵を取ると言ったら、同僚が調べてくれたのです.
実はコード変換をしただけです...
cer証明書はバイナリ符号化されているので、その内容を取得してからサブトランスコードすればいいです.
cer証明書はp 12からエクスポートされ(cerはバイナリであり、p 12はbase 64であり、ネット上でder(バイナリ)を調べてpem(base 64)を回転することができる)、コマンドをエクスポートする:
keytool -export -alias p12client -keystore dlt.p 12-storetype PKCS 12-storepassパスワード-rfc-file p 12.cer
cer公開鍵の読み出しは次のようになります.
function pem2der($pem_data) {
$begin = "KEY-----";
$end = "-----END";
$pem_data = substr($pem_data, strpos($pem_data, $begin)+strlen($begin));
$pem_data = substr($pem_data, 0, strpos($pem_data, $end));
$der = base64_decode($pem_data);
return $der;
}
function der2pem($der_data) {
$pem = chunk_split(base64_encode($der_data), 64, "
");
$pem = "-----BEGIN PUBLIC KEY-----
".$pem."-----END PUBLIC KEY-----
";
return $pem;
}
$file = "898000000000001.cer";
$fd = fopen($file, 'r');
$p12buf = fread($fd, filesize($file));
var_dump(der2pem($p12buf));-----------------------: der2pem 、pem2der , 。
明日も仕事頑張ります!