Довідник помилок / SSL_ERROR_RX_RECORD_TOO_LONG

Помилка SSL_ERROR_RX_RECORD_TOO_LONG у Firefox

SSL_ERROR_RX_RECORD_TOO_LONG це спосіб Firefox сказати, що він відкрив TLS-зʼєднання на порт 443 і отримав у відповідь щось, що не є TLS. На практиці сервер відповів звичайним HTTP, Firefox спробував прочитати ці перші байти як TLS-запис, побачив неможливу довжину запису і зупинився. Chrome у такій самій ситуації показує ERR_SSL_PROTOCOL_ERROR, тож сторінка, яка не відкривається у Firefox, зазвичай не відкривається ніде. Найчастіше помилку бачать одразу після переведення сайту на HTTPS або коли адреса вказує на порт зі звичайним HTTP.

Перевірте свій сайт

>

Через що виникає

Найчастіше винен віртуальний хост, який слухає порт 443 без реально ввімкненого SSL: вебсервер приймає зʼєднання і відповідає звичайним HTTP. Далі за поширеністю проксі, балансувальник чи CDN перед сайтом, який неправильно термінує TLS або передає запит на порт бекенда, що вміє лише HTTP. На третьому місці ситуація, коли сайт справді працює на нестандартному порту, а в адресі стоїть 443, або хтось набрав https:// на порт зі звичайним HTTP: повідомлення буде точно таке саме. Рідше зʼєднання перехоплює фаєрвол, антивірус зі скануванням HTTPS або captive portal у публічному Wi-Fi і віддає у відповідь не TLS.

Як виправити

  1. Запустіть перевірку на цій сторінці для свого домену. Вона відкриває справжнє TLS-зʼєднання на порт 443: якщо показано сертифікат, сервер TLS таки розуміє і проблема на вашому боці; якщо ж перевірка повідомляє, що TLS встановити не вдалося, справа на сервері і виправляти треба конфіг віртуального хоста або проксі.
  2. Якщо перевірка показала сертифікат, шукайте причину на своєму компʼютері й у своїй мережі: відкрийте сайт у приватному вікні Firefox, вимкніть в антивірусі сканування HTTPS, приберіть проксі та VPN, а в публічному Wi-Fi спершу відкрийте сторінку входу captive portal. Найшвидша перевірка: відкрити ту саму адресу через мобільний інтернет.
  3. Якщо перевірка теж не змогла встановити TLS, відкрийте конфіг сервера для порту 443. В Apache у SSL-вхості мають бути SSLEngine on разом із SSLCertificateFile і SSLCertificateKeyFile; у nginx рядок має бути listen 443 ssl;, а не listen 443;. Перевірте конфіг командою apachectl configtest або nginx -t і перезавантажте вебсервер.
  4. На хостинг-панелі вхости вручну не правлять: перевстановіть або перевипустіть сертифікат саме для цього імені хоста, разом із версією www, і панель сама перепише SSL-вхост. На власному сервері ще подивіться, що реально слухає 443 (ss -ltnp): якщо порт зайняв інший сервіс, відповідати буде він, а не ваш вебсервер.
  5. Якщо перед сайтом стоїть проксі, балансувальник чи CDN, визначте, який шар термінує TLS і куди він передає запит. Класична поломка: порт 443 пробрасують напряму на бекенд, який вміє тільки HTTP. Або термінуйте TLS на проксі й ходіть на HTTP-порт бекенда, або поставте сертифікат на бекенд і спілкуйтеся з ним по TLS.
  6. Перевірте порт в адресному рядку. Сайт на нестандартному порту треба відкривати як https://example.com:8443, а https:// на порт зі звичайним HTTP дає цю саму помилку, навіть коли із самим сайтом усе гаразд. Після кожної зміни перезавантажуйте сервер і повторюйте перевірку вище, щоб побачити, чи проходить рукостискання.

Схожі помилки