/**
* Формирует параметры верификации запроса.
*
* @param resource $ch Дескриптор cURL.
* @param string $path Расположение файла сертификата.
* @param int $ttl Интервал обновления сертификата (в минутах). По умолчанию: 7 дней.
* @return void
*/
function curl_setopt_verify($ch, $path, $ttl = 10080) {
$update = true;
$chain = [
'https://curl.haxx.se/ca/cacert.pem',
'https://gu-st.ru/content/Other/doc/russiantrustedca.pem'
];
if (file_exists($path)) {
// Определение необходимости обновления сертификата
if ((filemtime($path) + ($ttl * 60)) > time())
$update = false;
else
@unlink($path);
}
if ($update) {
foreach ($chain as $url) {
if ($content = file_get_contents($url))
file_put_contents($path, $content . PHP_EOL, FILE_APPEND | LOCK_EX);
}
}
if ($ch) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
if (file_exists($path))
curl_setopt($ch, CURLOPT_CAINFO, $path);
}
}