乐趣区

关于php:php-curl请求时设置客户端证书及私钥

因为之前没有接触到 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);
退出移动版