美文网首页
SSL operation failed with code 1

SSL operation failed with code 1

作者: RocaLee | 来源:发表于2019-08-23 11:00 被阅读0次

今天发生了一件很奇怪的事情,原来file_get_contents()能正常使用,今天不知道怎么回事使用它居然报错了。
错误信息如下

file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

于是从网上找解决的办法
方案一:

        $arrContextOptions=array(
            "ssl"=>array(
                "verify_peer"=>false,
                "verify_peer_name"=>false,
            ),
        );  
        $img = file_get_contents($img, false, stream_context_create($arrContextOptions));

方案二:
修改服务器的配置
找到密钥文件的位置

var_dump(openssl_get_cert_locations());

返回内容如下

array(8) {
  ["default_cert_file"]=>
  string(31) "/usr/local/openssl/xxx/cert.pem"
  ["default_cert_file_env"]=>
  string(13) "SSL_CERT_FILE"
  ["default_cert_dir"]=>
  string(28) "/usr/local/openssl/xxx/certs"
  ["default_cert_dir_env"]=>
  string(12) "SSL_CERT_DIR"
  ["default_private_dir"]=>
  string(30) "/usr/local/openssl/xxx/private"
  ["default_default_cert_area"]=>
  string(22) "/usr/local/openssl/xxx"
  ["ini_cafile"]=>
  string(0) ""
  ["ini_capath"]=>
  string(0) ""
}

修改php.ini

openssl.cafile=/usr/local/openssl/xxx/cert.pem

重启php
结果还是报错,结果发现服务器上根本没有这个pem文件,于是下载证书放进去,完美解决。
证书地址http://curl.haxx.se/ca/cacert.pem
如果自己的权限足够,不了解数据并且对安全有要求的,方案二是很安全的。
如果自己权限不足,但是确定数据的可靠性,方案一是很快的。

相关文章

网友评论

      本文标题:SSL operation failed with code 1

      本文链接:https://www.haomeiwen.com/subject/vcjzsctx.html