Ошибки SSL и сертификатов через прокси

Защищённое соединение с сайтом не установилось: сертификат не прошёл проверку или стороны не договорились о шифровании.

Обновлено · Редакция Prokso

Коротко
  • Защищённое соединение не установилось: сертификат отправляет сайт, а прокси только передаёт данные
  • Чаще всего на устройстве неправильные дата и время или HTTPS перехватывает антивирус
  • Включите автоматические дату и время и проверьте, что строка прокси начинается с http://

Что означает ошибка

Когда вы открываете HTTPS-сайт через HTTP-прокси, программа просит прокси открыть туннель методом CONNECT (RFC 9110). Дальше прокси только передаёт байты, а шифрованное соединение устанавливается между вашей программой и сайтом. Сертификат, который вы видите, прислал сайт.

Поэтому ошибки сертификата через прокси имеют те же причины, что и без него: часы на устройстве, программы, которые перехватывают HTTPS, настройки самого сайта. Отдельно стоят ошибки, когда программа пытается говорить по TLS с прокси там, где он ждёт обычный HTTP.

Ошибка handshake failure — это сигнал протокола TLS (RFC 8446): сторона не смогла согласовать приемлемый набор параметров безопасности. Чаще всего причина в устаревшей версии TLS или библиотеки.

Причины

  • Неправильные дата и время на устройстве. Chrome показывает ERR_CERT_DATE_INVALID: сертификат кажется просроченным или ещё не действительным.
  • HTTPS перехватывает антивирус или корпоративная сеть. Они подставляют собственный сертификат; если он не доверенный — ERR_CERT_AUTHORITY_INVALID.
  • Схема https:// в строке прокси. Программа пытается установить TLS с самим прокси на порту, где он ждёт HTTP, и получает ERR_SSL_PROTOCOL_ERROR или «wrong version number».
  • Устаревшая программа или библиотека. Она не поддерживает версии TLS и шифры, которые требует сайт: ERR_SSL_VERSION_OR_CIPHER_MISMATCH или handshake failure.
  • Проблема с сертификатом самого сайта. Сертификат просрочен или выдан не на тот домен — ERR_CERT_COMMON_NAME_INVALID.

Как исправить

  1. Включите автоматическую установку даты и времени на устройстве.
  2. Проверьте строку прокси: для порта 823 она должна начинаться с http://, как в инструкции Python requests. Сам сайт при этом может быть https://.
  3. Временно отключите проверку HTTPS в антивирусе или попробуйте другую сеть, чтобы исключить перехват.
  4. Обновите браузер, программу или библиотеку, через которую работаете.
  5. Не отключайте проверку сертификатов в программе: так вы убираете защиту от подмены, а причину не устраняете.
  6. Откройте сайт без прокси: если ошибка та же, проблема в сертификате сайта.

Как проверить, что всё заработало

Через тот же прокси откройте любой известный HTTPS-сайт и страницу «Мой IP». Если они открываются без предупреждений, соединение через прокси в порядке, а ошибку даёт конкретный сайт или программа.

Диагностика за 2 минуты

Сначала вставьте строку в проверку прокси. Если там прокси работает, причина в программе или её настройках. Если нет — проверьте строку из терминала:

curl -v -x "http://ЛОГИН:ПАРОЛЬ@gw.prokso.com:823" https://api.ipify.org
  • Строка < HTTP/1.1 407 сразу после CONNECT — отвечает прокси. Название после кода, например NO_USER, подсказывает причину.
  • Прокси ответил на CONNECT кодом 200, а дальше пришёл другой код — прокси работает, этот ответ дал сайт.
  • Никакого ответа, только тайм-аут — соединение не дошло до прокси: проверьте хост, порт и сеть.

Инструкции, где встречается эта ошибка

Вопросы и ответы

Видит ли прокси содержимое HTTPS-страниц?

Нет. В туннеле CONNECT шифрование устанавливается между вашей программой и сайтом, и прокси передаёт уже зашифрованные данные. Что храним мы, описано в политике: содержимое и адреса страниц, пароли не храним; для рассмотрения жалоб храним только домены, время и объём — 90 дней.

Почему ошибка только в программе, а браузер открывает сайт?

У программы может быть собственное хранилище сертификатов или старая библиотека TLS. Обновите её и проверьте, правильно ли указана схема прокси.

Можно ли просто отключить проверку сертификата?

Технически да, но не стоит: тогда программа не заметит подмены сертификата. Лучше найти и устранить причину.

Резидентские $1.59, мобильные $2.50, серверные $0.65 за 1 ГБ

Регистрация за минуту, доступы сразу после оплаты.

Создать аккаунт