OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

完整的错误记录是:

file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:

error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed.

使用错误的地方,在运行短信接口商提供的一个发短信的接口时遇到的:

$gateway = "https://xxx.xxx.com/sdk2/BatchSend2.aspx?CorpID={$uid}&Pwd={$passwd}&Mobile={$num}&Content={$msg}&Cell=&SendTime=";

$result = file_get_contents($gateway); //就这步的时候出错了

百度了好久,最后在一篇文章那里看到了解决办法,谢谢原作者。(https://blog.csdn.net/enlangs/article/details/78988673)

解决办法如下:

环境

OS:Windows 2008R2 
PHP Version:5.6.31

问题

file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:

error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed.

解决方法

  1. 从这儿下载 http://curl.haxx.se/ca/cacert.pem ,放到C盘certs目录下(没有就创建),存储为 cacert.crt
  2. 打开 php.ini 找到里面的 curl.cainfo 和 openssl.cafile(2个 section 挨着的,前面的分号去掉)
  3. 修改 curl.cainfo=”c:certscacert.crt”
  4. 修改 openssl.cafile=”c:certscacert.crt”
  5. 重启 IIS 服务(别忘记了,很重要!)

就这样就完美解决了!

原文地址:https://www.cnblogs.com/eaglepie/p/8967952.html