Почему старые Android‑устройства не открывают HTTPS‑сайты и что делать сразу
Короткий ответ: на Android 4 проблема чаще всего в устаревшем хранилище доверенных корней и несовместимости TLS/шифров (иногда — в SNI или старом WebView). Быстрое решение для пользователя — попробовать браузер с собственным TLS/CA‑стеком (например, Firefox) или обновить WebView/браузер; для администратора — отправлять совместимую цепочку сертификатов и поддерживать TLS 1.2.
Почему это происходит: кратко и по делу
- Устаревшие корневые сертификаты: современные CA и их цепочки подписи могли поменяться — старой системе просто не с чем сверить подпись.
- TLS и шифры: Android 4 по умолчанию не всегда поддерживает TLS 1.2 и современные наборы шифров; сервер, который требует только новые шифры, разрывает соединение.
- SNI и hostname в ClientHello: некоторые клиенты/библиотеки не отправляют имя хоста в TLS‑рукопожатии, и сервер отсылает неправильный сертификат или прерывает сессию.
- Старый WebView/браузер: движки не обновляются и неправильно обрабатывают современные требования HTTPS.
Если при попытке зайти на сайт видите «Сертификат не доверен» — это скорее проблема цепочки/CA. Если — «SSL protocol error» или «connection reset» — вероятно конфликт TLS/шифров.
Быстрые шаги для пользователя (применить прямо сейчас)
- Обновите браузер и Android System WebView через магазин приложений (если доступно).
- Установите альтернативный браузер с собственным trust‑store (чаще всего это решает проблему без сложных настроек).
- Для проверки: попробуйте открыть сайт в другом браузере на том же устройстве. Если открывается — проблема в системном хранилище/стеке.
- Только при полной уверенности: вручную установить корневой сертификат в "Настройки → Безопасность → Установить сертификат". Делать это можно только для доверенных внутренних CA.
Не добавляйте неизвестные корневые сертификаты и не понижайте требования к шифрам ради совместимости — это повышает риск перехвата трафика.
Что может сделать администратор / разработчик сервера
- Отправляйте совместимую цепочку сертификатов: используйте cross‑signed или альтернативную цепочку, если CA предоставляет такую опцию.
- Убедитесь, что сервер действительно отправляет полный chain (intermediate + совместимая подпись). Проверяйте через openssl:
openssl s_client -connect example.com:443 -servername example.com - Поддерживайте TLS 1.2 с набором широко совместимых, но безопасных шифров; не включайте старые уязвимые протоколы только ради устаревших клиентов.
- Для API: предложите клиентам на старых Android отдельный эндпоинт с совместимой цепочкой или обновлённую библиотеку клиента; в приложении можно явно включать TLS1.2 через кастомный SSLSocketFactory.
Частые ошибки
- Отправлять только «современную» цепочку, забыв о cross‑signed варианте — клиенты ломаются.
- Решать проблему понижением безопасности (включение SSLv3/TLS1.0) — это краткосрочно, но опасно.
- Думать, что проблема всегда на стороне сервера: иногда виноват конкретный клиент/библиотека в приложении.
FAQ
- Можно ли навсегда «починить» Android 4? Полностью — нет: ОС устарела. Можно обойти проблему браузером с собственным стеком или правильной серверной конфигурацией.
- Поможет ли смена сертификата на RSA/ECDSA? В ряде случаев да — важно, чтобы сервер отправлял цепочку, которую распознаёт старый клиент.
- Что быстрее для киоска — обновлять устройства или настраивать сервер? Обычно дешевле заменить устройство или использовать контролируемую сборку с актуальным WebView.
Если нужно, могу проверить конкретный домен: пришлите домен, и я опишу, какая цепочка и какие протоколы он отправляет, и какие конкретные настройки помогут.