Unable to enable crypto on TCP connection make sure the sslcafile or sslcapath option are properly

116 篇文章 0 订阅
96 篇文章 1 订阅
本文介绍了解决ZF2框架下使用HttpClient访问HTTPS站点时出现的加密连接问题的方法。通过设置HttpClient的适配器为Curl,并配置CURLOPT_SSL_VERIFYHOST等选项来禁用SSL验证及指定自签名证书路径。
摘要由CSDN通过智能技术生成

nginx

php

zf2

访问https时的问题

没有访问https时的代码

use Zend\Http\Client;

   $httpClient = new Client();
            $httpClient->resetParameters();
            $httpClient->setEncType(Client::ENC_URLENCODED);
            $httpClient->setUri($url);
            $httpClient->setMethod(Request::METHOD_GET);
            $response = $httpClient->send();

访问https时就会提示错误:Unable to enable crypto on TCP connection domainname make sure the sslcafile or sslcapath option are properly set for the environment.

增加以下代码即可

$httpClient->setAdapter("Zend\Http\Client\Adapter\Curl");

$options = array('http_client_options' => array(
        'adapter' => 'Zend\Http\Client\Adapter\Curl',
        'curloptions' => array(
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_CAINFO => '/etc/nginx/conf.d/server.crt',
        ),
    ),);
            $httpClient->setOptions($options);

因为采用了自己搭建的CA服务器,自己颁发的证书,此时系统可能会提示Error in cURL request: SSL certificate problem: self signed certificate

只要在文件/etc/php5/fpm/conf.d/20-curl.ini中增加已经生成的crt文件即可
curl.cainfo = /etc/nginx/conf.d/server.crt

service php-fpm restart

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值