PHP cURL: error 60 при запросе к API — обновление CA-сертификатов и curl.cainfo

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

Обновите CA-сертификаты и укажите путь в curl.cainfo.

В этой статье
  1. Что означает сообщение
  2. Причины и признаки
  3. Пошаговое решение
  4. На что обратить внимание

#Что означает сообщение

Сообщение
cURL error 60

Обновите CA-сертификаты и укажите путь в curl.cainfo.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Нет CA bundlecURL не находит доверенный кореньОбновить официальное хранилище CA
Просрочен сертификатИстёк срок сертификата APIПопросить владельца API обновить цепочку
Неверный путьcurl.cainfo указывает на отсутствующий файлУказать путь в активной конфигурации
Перехват трафикаСертификат выдаёт TLS-прокси организацииУточнить доверенные CA у администратора

#Пошаговое решение

  1. Отличите ошибку доверия от других неполадок TLScURL error 60 означает, что проверка цепочки сертификатов не прошла, но причина может быть в локальном хранилище CA, неполной цепочке сервера или перехватывающем прокси. На сервере с PHP запишите точный URL, время и сообщение curl_error(). Для быстрой диагностики в терминале выполните curl -Iv https://example.com, подставив реальный адрес API. Не добавляйте CURLOPT_SSL_VERIFYPEER => false: это отключает защиту от подмены сервера.
  2. Проверьте сертификат сервера и часыСверьте дату и часовой пояс сервера с реальным временем; неправильные часы могут нарушать проверку. Посмотрите цепочку сертификатов API в браузере или через openssl s_client -connect api.example.com:443 -servername api.example.com -showcerts, подставив точное имя сервера. Если провайдер отдаёт неполную цепочку, исправление требуется на стороне API; если используется корпоративный TLS-прокси, запросите доверенный сертификат у администратора, а не скачивайте случайный файл из интернета.
  3. Установите доверенный набор CA в активный PHPНа Linux обновите системный пакет ca-certificates штатным менеджером пакетов; путь к набору зависит от дистрибутива. На Windows/отдельной сборке PHP при необходимости скачайте актуальный cacert.pem только из доверенного источника cURL, проверьте путь к файлу и укажите абсолютный путь curl.cainfo="C:\certs\cacert.pem" в активном php.ini веб-обработчика, не только CLI. Для потоков OpenSSL может понадобиться отдельный openssl.cafile. После изменения перезапустите соответствующий PHP-FPM/веб-процесс.
  4. Проверьте результат без отключения защитыЧерез диагностическую страницу, доступную только администратору, проверьте ini_get("curl.cainfo") и факт чтения файла; затем повторите исходный HTTPS-запрос. Успех — cURL больше не выдаёт ошибку 60, а сервер отвечает приложению. При повторе выясните, какой именно корневой/промежуточный сертификат не найден. Удалите временную диагностическую страницу после проверки.

#На что обратить внимание

Не используйте CURLOPT_SSL_VERIFYPEER=false как исправление. На сервере с перехватывающим корпоративным прокси уточните политику доверенных сертификатов у администратора.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.