zoukankan      html  css  js  c++  java
  • PHP 使用 cURL HTTPS 协议证书认证问题

    参考 :

    StackOverflow

    CA证书下载地址 :

    Click Me

    PHP 使用 cURL 模块访问 https 时认证问题

    $ch = curl_init();
    $options = array(
        CURLOPT_URL=>$url,
        // 返回状态大于400时报错错误, 默认忽略
        CURLOPT_FAILONERROR=>true, 
        // 将返回内容赋值到变量, 默认直接输出
        CURLOPT_RETURNTRANSFER=>false,
        // 汇报全部的连接过程和意外
        CURLOPT_VERBOSE => 1,
    	/*
    	将verbose存储在资源中
    	curl_setopt($ch, CURLOPT_STDERR, fopen('log.log', 'a+'));
    	OR 
    	curl_setopt($session, CURLOPT_FILE, $logfh);
    	*/
        //显示头部信息
        // CURLOPT_HEADER => TRUE,
        CURLOPT_SSLVERSION => 3,
    	
        // **关键部分** 
        // 这里的路径指向认证服务器证书的CA证书, 不是服务器的证书
        CURLOPT_CAINFO=>'A:xxxcertcacert.pem',
        //CURLOPT_CAPATH=>dirname(__FILE__),
    	
        // 连接时使用 SSL/TLS 认证 , 一般和下面的 CURLOPT_SSL_VERIFYHOST 一起用
        // 忽略SSL/TLS认证, 2者同时为假
        CURLOPT_SSL_VERIFYPEER=>TRUE,
        // 认证证书中公用名称, 一般指证书中的 Common Name 即域名
        CURLOPT_SSL_VERIFYHOST=>2,
        
        //CURLOPT_HTTP200ALIASES=>[200],
        // 设置代理
        //CURLOPT_PROXY=>'http://127.0.0.1:8989',
        CURLOPT_POST=>true,
        // POST 内容, 需要urlencode处理一下
        CURLOPT_POSTFIELDS=>$data,
        // 设置头部
        CURLOPT_HTTPHEADER=>$header,
    );
    curl_setopt_array($ch, $options);
            
    try{
        $reponse = curl_exec($ch);
        if($reponse === false){
        	throw new Exception("访问异常: " . curl_error($ch), 400);
        }
    }catch(Exception $e){
    	echo $e->getMessage();
    }
    //echo $reponse;
    // print_r(curl_getinfo($ch));
    curl_close($ch);
    
    
  • 相关阅读:
    mongodb的学习-1-NoSQL
    mongodb的学习-3-在Mac上的安装配置
    面试题之算法与编程
    笔试题之javaweb
    笔试题之j2ee
    笔试题之代码查错
    笔试题之java基础
    javaweb笔记分享
    过滤器入门
    jsp入门
  • 原文地址:https://www.cnblogs.com/dongyanglv/p/6669033.html
Copyright © 2011-2022 走看看