今天遇到了一个接口联调,对方给了我一个java demo,需要证书发送请求,但是他给的文件是 apiclient_cert.p12这种格式的,然后给了我一个密码
但是我这边是php,一般使用的是一个key和秘钥一共两个证书
- apiclient_key.pem
- apiclient_cert.pem
- 于是 我这里需要根据他的p12文件和密码导出为通用的证书文件
# 首先,复制p12文件到linux,然后在linux下执行命令
openssl pkcs12 -in 证书名.p12 -out 文件名.pem -nodes # 注意替换文件名
Enter Import Password:
# 接下来输入密码 确定后查看是否生成了pem文件
ll
-rw------- 1 root root 3.3K Feb 7 15:06 test.pem
# 打开文件,复制文件内容
cat test.pem
将文件内容复制到不同的文件
-
首先将
-----BEGIN PRIVATE KEY-----
abcdefg…
-----END PRIVATE KEY-----
的内容 复制到文件 apiclient_key.pem -
将
-----BEGIN CERTIFICATE-----
abcdefg…
-----END CERTIFICATE-----
的内容 复制到文件 apiclient_cert.pem
然后就可以用php携带这俩证书进行https访问了
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true);
curl_setopt($ch, CURLOPT_SSLCERT,dirname(__FILE__).'/cert_dir/apiclient_cert.pem');
curl_setopt($ch, CURLOPT_SSLKEY, dirname(__FILE__).'/cert_dir/apiclient_key.pem');