Guzzle, PHP HTTP client 发送https请求报错

阅读 21.4k
3 个回答
$client->setDefaultOption('verify', false);

或者

# 证书 https://github.com/guzzle/guzzle/blob/4.2.3/src/cacert.pem
$client = new \GuzzleHttp\Client(['verify' => '/full/path/to/cert.pem']);

为了防中间人攻击,https的请求发起的时候,需要对服务器的证书进行验证,这里会用到根证书来验证。

['verify' => false]能强制不检测服务器证书的合法性,这样有中间人攻击的风险。

根证书的路径需要在php.ini配置,否则需要用参数指定 cacert.pem 的路径。

  1. 可以修改php.ini的话,就修改配置就好
  2. 不修改php.ini的话,下载一份ca根证书放代码里面,然后在curl请求是写下载来的这份证书的相对路径。

$client->request('GET', '/', ['verify' => false]);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题