因为之前没有接触过https双向认证,所以有点陌生。因为ssl证书和私钥都是对接方提供的,所以我的理解是:ssl证书携带客户端的公钥,对方服务器使用客户端的私钥验证,然后使用服务器的公钥加密后返回给客户端,然后用设置好的私钥解密,形成通道,双方在通道中收发数据。之前看别人的文章,整个过程也涉及到对称加密。在这里,把这次遇到的问题记下来。如有错误,请指正。php的curl代码如下:~~~~$sslcert='sslcertificate.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)作为字符串;
