В работе с терминалами сбора данных (ТСД) на базе устаревших версий операционных систем, таких как Android 5.1.1, системные администраторы часто сталкиваются с внезапным прекращением работы обмена данными по защищенному протоколу https. Особенно остро эта проблема проявилась на устройствах Urovo i6200S. Разберем ситуацию: после очередного обновления SSL-сертификата Let's Encrypt на сервере 1С, ТСД перестает подключаться к веб-сервисам или мобильному приложению, а браузер выдает ошибку безопасности. Проанализируем причины этого явления и пошагово восстановим работоспособность оборудования.
Проблема носит глобальный характер и связана с архитектурой доверия в интернете. Большинство бесплатных сертификатов Let's Encrypt раньше использовали кросс-подпись корневого сертификата DST Root CA X3 (владелец — IdenTrust). Срок действия этого «корня» истек 30 сентября 2021 года. Новые сертификаты Let's Encrypt теперь опираются на собственный корневой сертификат — ISRG Root X1.
Проанализируем состояние ТСД Urovo i6200S: установленная на нем Android 5.1.1 была выпущена задолго до того, как сертификат ISRG Root X1 стал общепризнанным стандартом. В системном хранилище (Trusted Root Store) этого устройства просто нет записи о новом «корне». В результате, когда мобильное приложение 1С пытается установить соединение через HTTPСоединение, система Android не может подтвердить подлинность сервера, так как цепочка доверия обрывается на неизвестном ей звене.
Рассмотрим самый доступный метод, не требующий модификации системных разделов устройства. Нам необходимо вручную «познакомить» Android с новым корневым сертификатом.
.der или .crt в кодировке DER, так как старые версии Android плохо воспринимают текстовый формат PEM.isrgrootx1.der.Важный нюанс: Android 5.1.1 потребует наличия установленного пароля или графического ключа на экране блокировки для использования пользовательских сертификатов. Если защиты нет, система предложит её создать.
После ручной установки сертификата в области уведомлений ТСД появится постоянное предупреждение: «Сеть может прослушиваться третьей стороной». Это штатное поведение Android 5.1, указывающее на то, что в цепочку доверия добавлен пользовательский сертификат. Для работы 1С это не является препятствием, однако может раздражать пользователей.
Если на ТСД получены права Root, мы можем переместить сертификат из пользовательского хранилища в системное, чтобы убрать это уведомление. Рассмотрим алгоритм для опытных администраторов:
# Конвертируем сертификат в формат с хеш-именем (выполняется на ПК с OpenSSL)
openssl x509 -inform DER -subject_hash_old -in isrgrootx1.der | head -1
# Получаем хеш, например: 4042b5d2
# Переименовываем файл в 4042b5d2.0
# Копируем файл в системную папку ТСД (требуется Root и Mount RW)
adb shell su -c "mount -o rw,remount /system"
adb push 4042b5d2.0 /system/etc/security/cacerts/
adb shell su -c "chmod 644 /system/etc/security/cacerts/4042b5d2.0"
После перезагрузки сертификат станет доверенным на системном уровне, и предупреждение исчезнет.
Часто мобильные клиенты 1С и специализированное ПО для ТСД используют встроенный компонент Android System WebView для отображения интерфейса или обработки запросов. На Urovo i6200S этот компонент может быть очень старым.
Даже если мы установим современный браузер (например, Firefox, который имеет собственное хранилище сертификатов), 1С:Мобильная платформа все равно будет использовать системный WebView. Поэтому мы рекомендуем обновить Android System WebView через установку APK-файла последней совместимой версии для Android 5.1 (обычно это версии около 95-й ветки). Это значительно повышает стабильность работы с современными протоколами шифрования TLS 1.2 и выше.
Если у вас нет возможности оперативно обновить парк ТСД, проанализируем вариант смены поставщика SSL-сертификата на сервере. Рассмотрим переход с Let's Encrypt на ZeroSSL или Buypass.
Корневые сертификаты ZeroSSL (Sectigo/Comodo) имеют более длительную историю доверия и их «корни» обычно уже присутствуют в прошивках старых устройств 2015-2016 годов выпуска. Настройка сервера (Nginx или Apache) при этом практически не меняется, так как ZeroSSL также поддерживает протокол автоматизации ACME. Использование таких сертификатов позволяет избежать ручной настройки каждого ТСД на складе.
Мы проанализировали проблему и выяснили, что основной причиной сбоя является устаревание системных механизмов проверки SSL на Android 5.1.1. Для решения задачи мы рекомендуем:
ISRG Root X1 через меню безопасности Android.Android System WebView до максимально возможной версии.Помните, что срок действия кросс-подписей Let's Encrypt для старых устройств ограничен сентябрем 2024 года, поэтому в долгосрочной перспективе стоит планировать обновление парка ТСД на модели с поддержкой современных версий Android (от 10 и выше).