今天在对接内部关键字处理接口时发生一个报错CURLOPT_SSLVERSION ,因为之前一直用的是HTTP,后观接口地址改为HTTPS。一直报证书问题
文档地址 :http://www.php.net/manual/zh/function.curl-setopt.php

http 请求的CURL

 /**
     * [service description]
     * @Author   Jerry
     * @DateTime 2018-11-24T17:07:50+0800
     * @Example  eg:
     * @param    [type]                   $url    [description]
     * @param    [type]                   $header [description]
     * @param    [type]                   $json   [description]
     * @return   [type]                           [description]
     */
    protected function service($url,$header,$json){
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS,$json);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            print curl_error($ch);
        }
        curl_close($ch);
        return  $result;
    }

> 结果一直报SSL: no alternative certificate subject name matches target host name 'xxx.xxx.xxx.xxx',我以为是对方证书的问题

排错后

 protected function service($url,$header,$json){
        $ch = curl_init($url);
      
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS,$json);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
        curl_setopt($ch, CURLOPT_SSLVERSION, 4);//设置SSL协议版本号


        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            print curl_error($ch);
        }
        curl_close($ch);
        return  $result;
    }

注意点

CURLOPT_SSLVERSION 值的设定

CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1 (5) , CURL_SSLVERSION_TLSv1_2 (6) 中的其中一个

Note:

你最好别设置这个值,让它使用默认值。 设置为 2 或 3 比较危险,在 SSLv2 和 SSLv3 中有弱点存在。