去发现生活中的美好,记录生活中的点点滴滴

PHP的Curl出现:curl call error(77): Problem with the SSL CA cert (path? access rights?)的解决方案

php admin 73℃

在执行CURL的时候,出现返回false的情况,这个时候,需要检查错误和原因:

 

打印错误:curl_error
打印错误码:curl_errno

出现77这种错误码,有一种可能就是系统的ca包没有更新

包名为

ca-certificates

更新一下这个包一般通过yum安装或者更新软件就没问题了

我今天遇到的问题是更新了该包以后,curl扩展还是提示这个问题 需要重启一下php 重新加载一下扩展才能解决问题

来自:http://blog.csdn.net/sdcxyz/article/details/46545677

出现问题:

1.如果是对于php-fpm这样的,可能需要重启一下,因为之前没有这个扩展进来,而你用ssl访问时就会出现这个问题。

2.有可能当时你加了ssl,但是后来呢,对方ssl证书更新了导致其证书过期了,这种情况果断重启动php:service php-fpm restart,我遇到的就是这个问题,重启后果断解决。

要不要双向认证:

http://www.cnblogs.com/freespider/p/3622830.html

PHP端解决办法:

  if ($ssl) {
                $options[CURLOPT_SSL_VERIFYHOST] = 1;//检测下服务器的域名与证书上的是否一致
                $options[CURLOPT_SSL_VERIFYPEER] = FALSE;//不判断服务器证书是否和正规浏览器认证过的授权(也就是说这块自己也能玩一个ssl,不提示错误)
            }

CURLOPT_SSL_VERIFYPEER:是否检测服务器的证书是否由正规浏览器认证过的授权CA颁发的

CURLOPT_SSL_VERIFYHOST:是否检测服务器的域名与证书上的是否一致

CURLOPT_SSL_VERIFYHOST的值

设为0表示不检查证书

设为1表示检查证书中是否有CN(common name)字段

设为2表示在1的基础上校验当前的域名是否与CN匹配

而libcurl早期版本中这个变量是boolean值,为true时作用同目前设置为2,后来出于调试需求,增加了仅校验是否有CN字段的选项,因此两个值true/false就不够用了,升级为0/1/2三个值。

再后来(libcurl_7.28.1之后的版本),这个调试选项由于经常被开发者用错,被去掉了,因此目前也不支持1了,只有0/2两种取值。

转载请注明:永盟博客 » PHP的Curl出现:curl call error(77): Problem with the SSL CA cert (path? access rights?)的解决方案

喜欢 (1)