Нажмите Ctrl+D (Windows) или ⌘+D (Mac), чтобы добавить сайт в закладки

Ошибка SSL-сертификата при подключении к AI API из России

SSL certificate problem / cURL error 60 — две причины и как их различить

«SSL certificate problem: unable to get local issuer certificate», «cURL error 60», «SSL handshake failed» — при обращении к официальным api.openai.com, api.anthropic.com или generativelanguage.googleapis.com из России эта ошибка встречается часто. За одинаковым текстом стоят две принципиально разные причины.

Сразу отсечём похожее Если вместо ошибки сертификата вы получаете тайм-аут или разрыв соединения — это другая проблема, сетевая. Ошибка про сертификат всегда означает одно: клиент не смог подтвердить, что сертификат настоящий.

Причина 1: сертификат подменяют по пути

Между вами и официальным доменом может стоять посредник, который вскрывает HTTPS и предъявляет клиенту свой сертификат: корпоративный прокси, средство фильтрации трафика у провайдера, антивирус с проверкой HTTPS. Браузер такой сертификат обычно принимает — его корень заранее установлен в системе, — а консольные клиенты и библиотеки отклоняют. Отсюда типичная картина: в браузере сайт открывается, а из кода тот же адрес выдаёт ошибку сертификата.

Причина 2: клиенту нечем проверить сертификат

  • Сильно сбитые дата и время. Сертификат проверяется в том числе по сроку действия: если часы ушли на месяцы, действующий сертификат выглядит просроченным или ещё не вступившим в силу.
  • Устаревшие корневые сертификаты ОС — особенно на старых версиях Windows или после переустановки системы без обновлений.
  • Антивирус или корпоративный прокси с SSL-инспекцией — они «подменяют» сертификат своим, и клиент видит его как недоверенный.
  • Системная переменная окружения (например, самодельный NODE_EXTRA_CA_CERTS или сброшенный SSL_CERT_FILE), оставшаяся от другой программы.

Как проверить, какая это причина

  1. Проверьте дату и время системы — это самая быстрая проверка из всех.
  2. Откройте тот же адрес с телефона через мобильный интернет (не Wi-Fi). Ошибки нет — причина либо в компьютере, либо в вашей сети; чтобы разделить, повторите с компьютера, раздав интернет с телефона.
  3. Временно отключите антивирус/VPN-клиент и повторите запрос — если ошибка исчезла, дело в перехвате трафика на вашей стороне.

Что делать

Если сертификат подменяет посредник — добавьте домен API в исключения антивируса или прокси. В корпоративной сети это решается только с администратором: он либо добавит исключение, либо выдаст корневой сертификат компании для установки в систему.

Если клиенту нечем проверить цепочку — обновите корневые сертификаты системы, синхронизируйте время, проверьте оставшиеся от других программ переменные окружения вроде NODE_EXTRA_CA_CERTS и SSL_CERT_FILE.

Отдельный случай — когда исключение сделать нельзя, например в корпоративной сети с обязательной проверкой трафика. Тогда остаётся сменить сеть или работать через агрегатор, домен которого фильтрация не трогает.

Частые вопросы

Почему возникает ошибка SSL-сертификата при обращении к api.openai.com или api.anthropic.com из России?
Эта ошибка всегда означает одно: клиент не смог подтвердить подлинность сертификата. Причин две. Либо сертификат подменяет посредник на пути — корпоративный прокси, фильтрация трафика у провайдера, антивирус с проверкой HTTPS. Либо самому клиенту нечем проверить цепочку: устаревшие корневые сертификаты системы, сильно сбитые часы, оставшиеся от других программ переменные окружения. Тайм-аут и разрыв соединения — это уже другая, сетевая проблема.
Как понять, подменяют сертификат или его нечем проверить?
Откройте тот же адрес в браузере на том же компьютере. Открывается там, но не работает из кода — почти наверняка HTTPS вскрывает антивирус или прокси. Затем повторите запрос с телефона через мобильный интернет: если оттуда всё в порядке, дело в вашем компьютере или вашей сети, а не в самом сервисе.
Поможет ли переход на агрегатор?
Иногда да: если HTTPS вскрывает фильтрация, которую вы не можете отключить, обращение к другому домену её обходит. Но если проблема на вашем компьютере — устаревшие сертификаты, сбитые часы, антивирус — смена сервиса не поможет: ошибка повторится и с новым адресом.
Если исключение сделать нельзя