cer证书,p12证书相关

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

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


从p12中取密钥:

[css]  view plain copy
  1. $p12cert = array();  
  2.         $file = "cert/A.p12";  
  3.         $fd = fopen($file, 'r');  
  4.         $p12buf = fread($fd, filesize($file));  
  5.         fclose($fd);  
  6.   
  7. 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公钥如下所示:

[css]  view plain copy
  1. function pem2der($pem_data) {  
  2.   $begin = "KEY-----";  
  3.   $end   = "-----END";  
  4.   $pem_data = substr($pem_data, strpos($pem_data, $begin)+strlen($begin));  
  5.   $pem_data = substr($pem_data, 0, strpos($pem_data, $end));  
  6.   $der = base64_decode($pem_data);  
  7.   return $der;  
  8. }  
  9.   
  10. function der2pem($der_data) {  
  11.   $pem = chunk_split(base64_encode($der_data), 64"\n");  
  12.   $pem = "-----BEGIN PUBLIC KEY-----\n".$pem."-----END PUBLIC KEY-----\n";  
  13.   return $pem;  
  14. }  
  15.   
  16. $file = "898000000000001.cer";  
  17. $fd = fopen($file, 'r');  
  18. $p12buf = fread($fd, filesize($file));  
  19. var_dump(der2pem($p12buf));-----------------------:这里调用 der2pem 、pem2der 都可以,两种方式。  


明天还要加油干活!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值