Почему старые 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/шифров.

Быстрые шаги для пользователя (применить прямо сейчас)

  1. Обновите браузер и Android System WebView через магазин приложений (если доступно).
  2. Установите альтернативный браузер с собственным trust‑store (чаще всего это решает проблему без сложных настроек).
  3. Для проверки: попробуйте открыть сайт в другом браузере на том же устройстве. Если открывается — проблема в системном хранилище/стеке.
  4. Только при полной уверенности: вручную установить корневой сертификат в "Настройки → Безопасность → Установить сертификат". Делать это можно только для доверенных внутренних 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.

Если нужно, могу проверить конкретный домен: пришлите домен, и я опишу, какая цепочка и какие протоколы он отправляет, и какие конкретные настройки помогут.