因为之前没有接触到https双向认证,所以有点陌生。
因为ssl证书和私钥都是对接方提供的,我的理解如下:
ssl证书携带了客户端的公钥,
对方服务器使用客户端的私钥验证,再用服务端的公钥加密返回
客户端再用设置的私钥解密形成通道,双方在通道中发收数据。
之前看别人文章时,完整流程还涉及了对称加密,这里先记下这次遇到的问题吧,如果有错误,欢迎指正。
php的curl代码如下:~~~~
$sslcert = 'ssl证书.pem';
$sslkey = 'ssl证书私钥指定文件';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '地址');
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_HEADER, ['Content-Type: application/xml']);
// 客户端ssl证书
curl_setopt($ch, CURLOPT_SSLCERT, $sslcert);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '密码');
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
// 私钥
curl_setopt($ch, CURLOPT_SSLKEY, $sslkey);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, '密码');
curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '发送的数据');
//验证对方的证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
//以字符串形式输出
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。