verify
摘要
请求时验证SSL证书行为。
- 设置成
true
启用SSL证书验证,默认使用操作系统提供的CA包。 - 设置成
false
禁用证书验证(这是不安全的!)。 - 设置成字符串启用验证,并使用该字符串作为自定义证书CA包的路径。
类型
- bool
- string
默认值
true
常量
GuzzleHttp\RequestOptions::VERIFY
// Use the system's CA bundle (this is 默认设置)
$client->request('GET', '/', ['verify' => true]);
// Use a custom SSL certificate on disk.
$client->request('GET', '/', ['verify' => '/path/to/cert.pem']);
// Disable validation entirely (don't do this!).
$client->request('GET', '/', ['verify' => false]);
并非所有的系统磁盘上都存在CA包,比如,Windows和OS X并没有通用的本地CA包。 当设置”verify” 为 true
时,Guzzle将尽力在你的操作系统中找到合适的CA包, 当使用cURL或PHP 5.6以上版本的流时,Guzzle将按以下顺序尝试查找CA包:
- 检查php.ini文件中是否设置了
openssl.cafile
。 - 检查php.ini文件中是否设置了
curl.cainfo
。 - 检查
/etc/pki/tls/certs/ca-bundle.crt
是否存在 (Red Hat, CentOS, Fedora; 由ca-certificates包提供) - 检查
/etc/ssl/certs/ca-certificates.crt
是否存在 (Ubuntu, Debian; 由ca-certificates包提供) - 检查
/usr/local/share/certs/ca-root-nss.crt
是否存在 (FreeBSD; 由ca_root_nss包提供) - 检查
/usr/local/etc/openssl/cert.pem
是否存在 (OS X; 由homebrew提供) - 检查
C:\windows\system32\curl-ca-bundle.crt
是否存在 (Windows) - 检查
C:\windows\curl-ca-bundle.crt
是否存在 (Windows)
查询的结果将缓存在内存中,以便同一进程后续快速调用。 然而在有些服务器如Apache中每个请求都在独立的进程中,你应该考虑设置 openssl.cafile
环境变量,指定到磁盘文件,以便整个过程都跳过。
如果你不需要特殊的证书包,可以使用Mozilla提供的通用CA包,你可以在 这里 下载(由cURL的维护者提供)。 一旦磁盘有了CA包,你可以设置PHP ini配置文件,指定该文件的路径到变量 openssl.cafile
中,这样就可以在请求中省略 “verify” 参数。 你可以在 cURL 网站 发现更多关于SSL证书的细节。