客户端PHP 面对WebService 接口ssl双向认证
关键词:PHP、WebService 、PHP对接WebService接口 、ssl 、双向认证
开发过程中可能会出现如下:
问题点1: php调用server,php的soapClient只识别DER、PEM或者ENG格式的证书,所以必须要把client.p12转换为php可识别的pem文件,这时用到了openssl。
执行命令:
openssl pkcs12 -in client.pfx -out client-cer.pem -clcerts
如果提示openssl命令不识别则是你没安装openssl ,如果执行成功会提示你先输入client.pfx的密码,输入后会让你输入导出的cer.pem的密码,输入后大功告成,client-cer.pem生成成功!。
问题点2: php在file_get_contents($wsdl)时会error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed(一般正式环境、与测试环境会有差异,测试环境会使用无效的HTTPS,会有该报错)
注意配置:
$arrContextOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
]
];
echo file_get_contents($wsdl, false, stream_context_create($arrContextOptions));
exit;
问题点3:目前大部分客户对接时会提供java的demo,给不懂java的PHPer带来困