Помилки 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.
Як виправити
- Увімкніть автоматичне встановлення дати й часу на пристрої.
- Перевірте рядок проксі: для порту 823 він має починатися з
http://, як в інструкції Python requests. Сайт при цьому може бути https://. - Тимчасово вимкніть перевірку HTTPS в антивірусі або спробуйте іншу мережу, щоб виключити перехоплення.
- Оновіть браузер, програму або бібліотеку, через яку працюєте.
- Не вимикайте перевірку сертифікатів у програмі: так ви прибираєте захист від підміни, а причину не усуваєте.
- Відкрийте сайт без проксі: якщо помилка та сама, проблема в сертифікаті сайту.
Як перевірити, що все запрацювало
Через той самий проксі відкрийте будь-який відомий 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 ГБ
Реєстрація за хвилину, доступи одразу після оплати.