PHP7 certificate verify failed
2019-05-20 本文已影响0人
小胖扁
SSL错误
现象
升级PHP7之后,下面代码执行中产生了错误
<?php
file_get_contents("https://pic.qingting.fm/2015/0703/20150703103711316.jpg!medium");
错误:
PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed...
检查
检查了openssl版本,一致
[chenpeiyuan@xxx ~]$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
检查PHP默认使用的证书位置
<?php
var_dump(openssl_get_cert_locations());
执行结果如下,default_cert_file
位置为/usr/local/openssl/ssl/cert.pem
,实际检查发现已经没有这个证书了
array(8) {
["default_cert_file"]=>
string(31) "/usr/local/openssl/ssl/cert.pem"
["default_cert_file_env"]=>
string(13) "SSL_CERT_FILE"
["default_cert_dir"]=>
string(28) "/usr/local/openssl/ssl/certs"
["default_cert_dir_env"]=>
string(12) "SSL_CERT_DIR"
["default_private_dir"]=>
string(30) "/usr/local/openssl/ssl/private"
["default_default_cert_area"]=>
string(22) "/usr/local/openssl/ssl"
["ini_cafile"]=>
string(0) ""
["ini_capath"]=>
string(0) ""
}
可以使用curl的证书
下载之后放在/usr/local/openssl/ssl/cert.pem
,重试最初的PHP测试代码可以正确执行