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

coder_
  • 48
回复
阅读 14.9k
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']);
cloudlylyly
  • 1
新手上路,请多包涵

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

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

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

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

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

宣传栏