Задать вопрос
@issssrt

Почему перестал работать file_get_contents?

У меня есть небольшой скрипт, суть которого с помощью file_get_contents забирать данные с одного стороннего сайта.
Все работало штатно, но сегодня сторонний сайт по расписанию обновил свой ssl-сертификат от lets'en crypt, и мой скрипт возвращает ошибку:
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in ...


Я попробовал свой скрипт запустить на другом сервере (который ни разу не обращался к стороннему сайту) и скрипт штатно отработал.

Я полагаю что нужно где-то кэш на моем сервер почистить?
  • Вопрос задан
  • 194 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@alexalexes
Попробуйте использовать более гибкие опции stream_context_create, в качестве одного из параметров функции file_get_contents. Попробуйте 'verify_peer' => false.
$url = 'https://secure.example.com/test/1';
$contextOptions = array(
    'ssl' => array(
        'verify_peer'   => true,
        'cafile'        => __DIR__ . '/cacert.pem',
        'verify_depth'  => 5,
        'CN_match'      => 'secure.example.com'
    )
);
$sslContext = stream_context_create($contextOptions);
$result = file_get_contents($url, NULL, $sslContext);

Источник.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vitaly_il1
DevOps Consulting
IMHO, скорее всего вам надо обновить систему, так как у вас устаревший Letsencrypt root cert (https://techcrunch.com/2021/09/21/lets-encrypt-roo...).
Насколько понимаю, это RPM ca-certificates.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
С 1 октября летсенкрипт сменила корневой сертификат, обновляйте у себя версию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы