如何在 Guzzle 5 中忽略无效的 SSL 证书错误

2022-08-30 08:11:35

这应该是一件容易的事情。我可以在Guzzle 3中找到很多关于如何做到这一点的参考资料,但它们在Guzzle 5中不起作用。

到目前为止,我正在做的事情:

$this->client = new GuzzleClient(['defaults' => [
    'verify' => 'false'
]]);

当我发送请求时,我收到此错误:

RequestException in RequestException.php line 51:
SSL CA bundle not found: false

我无法在谷歌上找到任何有用的参考这个错误。如果我可以访问curl选项,那么我可以尝试类似于这里建议的解决方案(这是针对Guzzle 3的,因此为什么它不起作用):http://inchoo.net/dev-talk/symfony2-guzzle-ssl-self-signed-certificate/,其中的相关部分是:

$req->getCurlOptions()->set(CURLOPT_SSL_VERIFYHOST, false);
$req->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, false);

答案 1

您应该使用

$this->client = new GuzzleClient(['defaults' => [
    'verify' => false
]]);

即布尔假,而不是字符串“false”

文档在这里:https://docs.guzzlephp.org/en/5.3/clients.html#verify

注意:有些人给出了适用于Guzzle 6 +的其他答案。如果您使用的是这些版本,它们是很好的答案(但最初的问题明确地与Guzzle 5有关)。


答案 2

尝试使用有效的更新版本:

$this->client = new GuzzleClient(['base_uri' => 'https://api.example.com/', 'verify' => false ]);

或更简单的版本:

    $this->client = new GuzzleClient(['verify' => false ]);

使用版本 6.2-dev 进行了测试。


推荐