1.密钥格式有两种:
A.PKCS8(JAVA适用)
B.PKCS1(非java适用)
可以使用工具进行格式转换,支付宝官网有.
2.证书格式有
A.pfx里面有私钥和公钥,读取可能需要密码,如果没有密码传入"".
openssl_pkcs12_read ( string $pkcs12 , array &$certs , string $pass ) : bool
B.cer存储使用二进制格式,文本打开为乱码,可使用base64_encode转换为实体文本内容.CER=>pem格式方法如下:
/**
* CER证书转换为pem格式
* */
private function cer_to_pem($cer){
$cer = '-----BEGIN CERTIFICATE-----'.PHP_EOL
.chunk_split(base64_encode($cer), 64, PHP_EOL)
.'-----END CERTIFICATE-----'.PHP_EOL;
return $cer;
}
C.pem存储为文本格式,可以直接读取使用.
D.其他格式暂未使用过,略
3.PHP内置函数别名的疑问,功能是一样的.
openssl_get_privatekey — 别名 openssl_pkey_get_private
openssl_get_publickey — 别名 openssl_pkey_get_publi
成功,返回真实的密钥资源标识符(非实体文本,打印会显示NULL),错误,则返回 FALSE
神奇的事情:如果不使用该函数,直接使用文本格式也可以正常签名和验签,PHP 5.6.x环境下,其他版本未测试.