它的作用和含义:
以下代码告诉 cURL 不验证安全证书是否正确。因此,错误消失了。
$opts[CURLOPT_SSL_VERIFYPEER] = false;
$opts[CURLOPT_SSL_VERIFYHOST] = 2;
当您使用 SSL 连接到远程服务器时,其证书可能无效、过期或未由公认的 CA 签名。cURL 通常会检查它。
CURLOPT_SSL_VERIFYHOST:
- 1:检查 SSL 对等证书中是否存在通用名称。
- 2:检查公用名是否存在,并验证它是否与提供的主机名匹配。
CURLOPT_SSL_VERIFYPEER: FALSE 阻止 CURL 验证对等方的证书。可以使用 CURLOPT_CAINFO 选项指定要验证的备用证书,也可以使用该选项指定证书目录CURLOPT_CAPATH
。如果 CURLOPT_SSL_VERIFYPEER 被禁用(默认为 2),CURLOPT_SSL_VERIFYHOST 也可能需要为 TRUE 或 FALSE。
如何正确启用和验证:
为了正确验证,我们需要验证提供给我们的证书是真实的。我们通过将其与我们合理*信任的证书进行比较来做到这一点。
如果远程资源受 Verisign、GeoTrust 等主要 CA 颁发的证书保护,您可以安全地与 Mozilla 的 CA 证书包进行比较,您可以从http://curl.haxx.se/docs/caextract获得.html
将文件 cacert.pem 保存在服务器中的某个位置,并在脚本中设置以下选项。
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt ($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
如果您要连接到受自签名证书保护的资源,您需要做的就是获取 PEM 格式的证书副本并将其附加到上一段的 cacert.pem 中。