cer証明書、p 12証明書関連

1504 ワード

最近銀聯の携帯電話のチャージのセットをして、クライアントのサーバーの端はいっしょにして、とても疲れます.相手は2つの証明書をあげました.A.p 12とB.cerです.A.p 12の秘密鍵は簡単に入手できますが、B.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 , 。

明日も仕事頑張ります!