cer证书,p12证书相关

最近做银联手机充值的一套东西,客户端服务器端一起做,好累呀。对方给了两个 证书,A.p12 和 B.cer。A.p12中的私钥很容易可以得到,但是B.cer中的公钥却怎么都拿不到,害我查了大半天。。。

原来 .p12中也有公钥。。。。大哭


从p12中取密钥:

$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证书由p12导出(只不过cer是二进制,p12是base64,可以网上查der(二进制)转pem(base64)),导出命令:

keytool -export -alias p12client -keystore dlt.p12 -storetype PKCS12 -storepass 密码 -rfc -file p12.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, "\n");
  $pem = "-----BEGIN PUBLIC KEY-----\n".$pem."-----END PUBLIC KEY-----\n";
  return $pem;
}

$file = "898000000000001.cer";
$fd = fopen($file, 'r');
$p12buf = fread($fd, filesize($file));
var_dump(der2pem($p12buf));-----------------------:这里调用 der2pem 、pem2der 都可以,两种方式。


明天还要加油干活!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值