curl-https-php

php使用curl访问https返回无结果的问题

用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’);



$curl http://curl.haxx.se/ca/cacert.pem -o cacert.pem



ErrnoSSL: certificate verification failed



英文mac本地安装了多版本的php,php curl 扩展版本不匹配
旧版本的cur 默认不支持https 需要重新编译php curl 扩展



certificate verification failed (result: 5)
vi cacert.pem 发现是空
curl-config –ca
也为空
下载证书
curl_setopt($ch,CURLOPT_CAINFO,dirname(FILE).’/cacert.pem’);
或者
/.ssh
sudo wget http://curl.haxx.se/ca/cacert.pem
export CURL_CA_BUNDLE=~/.ssh/cacert.pem
发现
$url=’https://yq.aliyun.com/ziliao/157066’;
成功,但是
$url=”https://www.baidu.com”;
失败


Category php