php curl 获取https请求的2种方法

今天一个同事反映,使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed”

很明显,验证证书的时候出现了问题。

使用curl如果想发起的https请求正常的话有2种做法:

方法一、设定为不验证证书和host。

在执行curl_exec()之前。设置option

代码如下:

$ch = curl_init();

......

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

方法二、设定一个正确的证书。

本地ssl判别证书太旧,导致链接报错ssl证书不正确。

我们需要下载新的ssl 本地判别文件

http://curl.haxx.se/ca/cacert.pem

放到 程序文件目录

curl 增加下面的配置

代码如下:

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); ;
   curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).'/cacert.pem');

大功告成

(本人验证未通过。。。报错信息为:SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed)

如果对此感兴趣的话可以参看国外一大神文章。http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

(0)

相关推荐

  • PHP中Http协议post请求参数

    本文给大家介绍PHP中Http协议post请求参数,具体内容如下所示: WEB开发中信息基本全是在POST与GET请求与响应中进行,GET因其基于URL的直观,易被我们了解,可POST请求因其信息的隐蔽,在安全的同时,也给开发者们模拟发送带来了麻烦.接下来的几篇博文中,我将结合自己的笔记和理解,详细解释PHP进行POST请求的几种方法,如有错误,烦请指正. HTTP协议信息是WEB开发中的一项重要内容,了解它可以帮助我们更深刻地理解BS交互,也有利于我们从更底层理解WEB开发.HTTP协议是一种

  • PHP使用socket发送HTTP请求的方法

    本文实例讲述了PHP使用socket发送HTTP请求的方法.分享给大家供大家参考,具体如下: socket方式: $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec"=>20, "usec"=>0)); socket_connect($socket, 'www.bai

  • PHP实现HTTP断点续传的方法

    本文实例讲述了PHP实现HTTP断点续传的方法.分享给大家供大家参考.具体实现方法如下: <?php /** * PHP-HTTP断点续传实现 * @param string $path: 文件所在路径 * @param string $file: 文件名 * @return void */ function download($path,$file) { $real = $path.'/'.$file; if(!file_exists($real)) { return false; } $si

  • php之curl实现http与https请求的方法

    本文实例讲述了php之curl实现http与https请求的方法,分享给大家供大家参考.具体如下: 通常来说,php的curl函数组可以帮助我们把机器伪装成人的行为来抓取网站,下面来分享两个例子,一个是访问http网页,一个访问https网页,一起来看一下. 每次要使用curl的时候,总要查一堆资料. 现在将常用的几句保存下来,省的每次都去谷歌. 常规curl请求: 复制代码 代码如下: $url = 'http://www.jb51.net'; $curl = curl_init(); cur

  • PHP HTTP 认证实例详解

    HP来实现HTTP的强制认证是十分简单的,只需简单的几行代码就可以实现,下面我们来看一个例子,然后结合这里例子我向大家详细介绍一下PHP实现HTTP认证. <?php if(!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="系统名称"'); header('HTTP/1.0 401 Unauthorized'); echo '未通过HTTP认证.'; exit; } else {

  • PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)

    方法一: 在php中,抓取https的网站,提示如下的错误内容: Warning: file_get_contents() [function.file-get-contents]: failed to open stream: Invalid argument in I:Webmyphpa.php on line 16 打开php.ini文件找到 ;extension=php_openssl.dll ,去掉双引号";" ,重启web服务器即可. apache服务器的话,可以同时启用m

  • 重新封装zend_soap实现http连接安全认证的php代码

    复制代码 代码如下: <?php class MyFramework_Soap_server extends Zend_Soap_Server { protected $_login = ''; protected $_password = ''; public function __construct($wsdl = null, array $options = null) { parent::__construct($wsdl,$options); if(isset($options['lo

  • php使用curl访问https示例分享

    为方便说明,先上代码吧 复制代码 代码如下: /**  * curl POST  *  * @param   string  url  * @param   array   数据  * @param   int     请求超时时间  * @param   bool    HTTPS时是否进行严格认证  * @return  string  */  function curlPost($url, $data = array(), $timeout = 30, $CA = true){ $cace

  • 使用PHP模拟HTTP认证

    如果你希望在每个脚本的基础上实现口令保护功能,那么你可以通过结合header()函数和$PHP_AUTH_USER.$PHP_AUTH_PW全局变量的方法来创建一个基本认证机制.通常基于服务器的认证请求/响应过程如下: 1. 用户向一台Web服务器请求一个文件.如果文件在一个受到保护的区域以内,服务器就在响应数据的头部内加上401(非法用户)字符串作为回应. 2.浏览器看见该响应之后弹出用户名/口令对话框. 3.用户在对话框中输入用户名和口令,然后单击"OK"把这些信息送回到服务器进行

  • PHP中基本HTTP认证技巧分析

    本文实例讲述了PHP中基本HTTP认证技巧.分享给大家供大家参考.具体分析如下: 通过组合.htaccess文件和.htpasswd文件被用来阻止用户访问某些服务器上的目录.这些文件包含有关用户被允许访问一个目录和自己的密码信息. HTTP身份验证可以通过发送特殊的HTTP header信息,而不用使用.htaccess文件 复制代码 代码如下: <?php     if (!isset($_SERVER['PHP_AUTH_USER'])) {         header("WWW-A

  • php下通过伪造http头破解防盗链的代码

    伪造referer实例代码,主要用于一些突破防盗链,比如图片,软件等等 这里就直接给出完整的程序吧,具体的应用可以自己修改. 我这里给出的例子是很简单的,其实可以从这个例子中发展出很多的应用.比如隐藏真实的URL地址--嘿嘿,具体的就自己分析去吧 这里新建一个文件file.php.后面的参数就是需要伪造referfer的目标地址吧.如:file.php/http://www.xxx.xxx/xxx.mp3 复制代码 代码如下: <? $url=str_replace('/file.php/','

随机推荐