开发者社区> suboysugar> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

OPENSSL问题,使用fsockopen()函数提示错误

简介: 环境配置系统环境 CentOS7.2WDCP v3.2.2 lanmpPHP 多版本 指定使用5.6OpenSSL 1.0.2h  3 May 2016php.ini相关设置allow_url_fopen = Onallow_url_include = Onopenssl.
+关注继续查看

环境配置

系统环境 CentOS7.2
WDCP v3.2.2 lanmp

PHP 多版本 指定使用5.6

OpenSSL 1.0.2h  3 May 2016

php.ini相关设置
allow_url_fopen = On
allow_url_include = On
openssl.cafile= /www/wdlinux/nginx/conf/cert/cacert.pem  (后来下载OPENSSL证书放上的)

问题描述

PHP程序中使用

  1. $matches = parse_url($url);
  2. $host = $matches['host'];
  3. $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';
  4.         $transports = '';
  5.         if($matches['scheme'] == 'https') { //判断是否使用HTTPS
  6.             $transports = 'ssl://';  //如使用HTTPS则使用SSL协议
  7.             $port = !empty($matches['port']) ? $matches['port'] : 443; //如使用HTTPS端口使用443
  8.         } else {
  9.             $transports = 'tcp://'; //如没有使用HTTPS则使用tcp协议
  10.             $port = !empty($matches['port']) ? $matches['port'] : 80;//如没有使用HTTPS则使用80端口
  11.         }
  12. $fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);
复制代码



其中此PHP文件运行无效果,生成error_log信息如下

  1. <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
  2. error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed | ../client.class.php | 395
  3. <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): Failed to enable crypto | ../client.class.php | 395
  4. <?php exit;?>05-12 20:40:12 | 2 | fsockopen(): unable to connect to ssl://www.xxx.net:443 (Unknown error) | p../client.class.php | 395
复制代码




395行就是以上代码中的 $fp = @fsockopen(($transports . $host), $port, $errno, $errstr, $timeout);

百度很多资料,没找到相关PHP报错的资料,找到一些E文网站,大约是说没有下载openssl根证书,于是更具资料提示下载OpenSSL根证书,并在php.ini设置OPENSSL证书位置,还是不能正常运行,报以上错误,估计是OPENSSL环境配置的问题,请admin指点

 

我百度了一些错误关键词
OpenSSL Error messages:error:14090086
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 
Failed to enable crypto
好像都是说关于openssl根证书的问题,大神能帮看下如何解决吗

 

经过三天的摸索和查找资料,现在我已确定问题所在
此问题和wdcp无关,和php版本以及openssl相关

主要是因为php在5.6版本(包含5.6)以后的所有版本中如使用fsockopen() 或file_get_content()函数获取https站点的信息,OPENSSL会验证对方站点的SSL证书颁发机构是否可信,如果没有下载openssl根证书并在php.ini中设置openssl根证书路径,就会造成无法验证对方网站SSL证书是否可信,就无法使用上述两个函数获取到内容同时生成PHP警告信息,php5.6以前的老版本中此验证功能是没有开启或者说是没有作用的。所以php5.6以前的版本不存在此问题!
OpenSSL Error messages:error:14090086
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 
Failed to enable crypto

特在此说明原因,同时希望我这两天的折腾对以后遇到同样问题的朋友有所帮助少走弯路

 

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
gpg: verify signatures failed: 文件打开错误
gpg: verify signatures failed: 文件打开错误
0 0
SSL连接出错的原因都有哪些?
  SSL连接出错的原因都有哪些?  SSL连接是SSL概念中一个极其重要的存在,它指的是利用数据加密技术 ,来确保数据在网络传输中不被截取。由此可以看到,若是SSL连接过程出现了错误,就不能确保数据传输的安全性了,那么可能引起SSL连接出错的原因都有哪一些呢?  一、SSL证书不是由受信任的证书颁发机构颁发,即SSL证书不在所用浏览器厂商受信任的列表之中。
598 0
PHPMailer命令执行及任意文件读取漏洞
  今天在thinkphp官网闲逛,无意下载了一套eduaskcms,查看了一下libs目录中居然存在PHPMailer-5.2.13,想起了之前看到的PHPMailer的漏洞,可惜这套CMS只提供了一个邮箱接口,前台页面需要单独自己写,没办法用这套CMS进行复现,这边也顺便利用这个PHPMailer-5.2.13对CVE-2016-10033和CVE-2017-5223进行本地复现,记录一下。
1962 0
php错误提醒FastCGI Error Error Number: -2147467259 (0x80004005)错误原因及解决方法
本文转自IT摆渡网欢迎转载,请标明出处。 更多php文章请阅读 php问题解决   我的PHP是IIS模式的,今天出现这种错误提示:FastCGI Error The FastCGI Handler was unable to process the request. //FastCGI无法处理请求,出现这种错误多见于在IIS中以FastCGI模式运行PHP的情况,原因是php.ini配置的问题,费话不多说,这里直接给出解决方法,不浪费时间。
1527 0
使用CURL出现certificate verify failed错误的解决方法
今天使用CURL访问微信平台接口时遇到一个错误,返回错误代码如下: ? 1 2 SSL certificate problem, verify that the CA cert is OK.
739 0
关闭PHP错误提示的方法
一 HP关闭脚本错误提示的方法: 打开PHP安装目录下的php.ini文件 找到display_errors = On 修改为 display_errors = off 注意:如果你已经把PHP.
669 0
libssh2编译错误(configure error: cannot find OpenSSL or Libgcrypt)解决方法
如果按标准的configure执行: ./configure --prefix=/data/users/mooon/third-party/libssh2 --with-openssl --with-libssl-prefix=/data/users/mooon/third-par...
745 0
PHP错误“This file has expired”的解决方法
遇到PHP程序报错,提示“This file has expired”的情况,解决方法如下:原因:出现此错误绝大多数情况是由于您使用了Zend软件对PHP文件进行加密,而Zend软件的授权已经过期(或者您使用“非正版”软件)。
871 0
+关注
suboysugar
目前为自由职业者,从事BA业务分析和互联网产品设计等工作,本人先后在中关村在线、中国工商银行和神州数码工作。拥有互联网,移动互联网,软件公司等开发经历。计算机本科毕业,8年互联网和软件行业经验。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载