功能及含义:
以下代码告诉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,则CURLOPT_SSL_VERIFYHOST可能需要设置为TRUE或FALSE(默认为2)。
如何启用并正确验证:
为了正确验证,我们需要确认向我们呈现的证书是真实有效的。我们通过将其与我们合理信任的证书进行比较来完成此操作。
如果远程资源受到由主要CA(如Verisign、GeoTrust等)发行的证书的保护,则可以安全地与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文件。