我想保持我的根证书为最新状态,以便与 cURL 和 PHP 内部一起使用curl
命令,但是当前没有参数可以下载正确的安全连接所需的当前文件并使其保持最新。
以及使用示例curl
在 PHP 中用于安全连接,需要一个名为cacert.pem
(用于验证远程连接的PEM编码证书链)如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
if (!($data = curl_exec($ch))) {
echo "No data received";
} else {
echo strlen($data) + " total byte(s)";
}
curl_close($ch);
虽然大多数人只是简单地设置CURLOPT_SSL_VERIFYPEER
false,从而忽略这个问题,这很糟糕 https://stackoverflow.com/a/4661467/3504007。你可以.
我所要求的是一种合法的方式来维护本地副本cacert.pem
这样当我使用curl
在PHP中与其他服务器通信,我可以继续这样做securely .
这不是对外部资源或异地链接等的请求,但是由于问题的性质,这可能是解决此问题的唯一方法,因为随着证书链被撤销,它需要持续更新。迄今为止,还没有办法获取此文件作为curl本身或php或php的curl库的发行版的一部分并继续维护它。虽然令人沮丧的是,这不是像这样简单的更新命令curl --update-root-ca
那就太好了,它不以任何形式存在。