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的证书

curl官方证书

下载之后放在/usr/local/openssl/ssl/cert.pem,重试最初的PHP测试代码可以正确执行

参考

PHP Manual

上一篇下一篇

猜你喜欢

热点阅读