今天碰到客户应用服务器(CentOS)一个问题,使用getimagesize()时总是报错:
PHP getimagesize(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
初步判断是php.ini里的openssl.cafile没有设置,打开php配置文件后却发现是有设置了的,目前设置值是:
openssl.cafile=/etc/pki/tls/certs/ca-bundle.crt
1
之后又怀疑是证书可能过期失效,就先对比自己的服务器这个文件的内容,发现大小不一致,就从自己服务器上复制内容粘贴过来,保存后重载php配置问题依然存在;
想起之前在Windows系统上也出现过类似的问题,当时配置了curl.cainfo就行,于是就从这个网站
:http://curl.haxx.se/ca/cacert.pem下载证书,并放到/usr/local/openssl/目录,修改配置
[curl]
curl.cainfo = /usr/local/openssl/cacert.pem
[openssl]
openssl.cafile=/usr/local/openssl/cacert.pem
网上出现这个问题的,搜出来的解决方式也都是这么操作的。然而保存后重载配置问题依旧。又把配置重新改回去。
最后在Stack Overflow上看到这篇文章:https://stackoverflow.com/questions/17084886/ssl-error-routinesssl3-get-server-certificatecertificate-verify-failed
发现Linux系统有更新本地证书的命令,不同系统命令不同,CentOS操作如下 :
# 安装ca证书工具
yum install ca-certificates -y
# 更新证书
update-ca-trust
问题解决。
文章为转载原文地址为:
https://blog.youkuaiyun.com/nbaqq2010/article/details/120655211