Не открываются сайты на телевизоре LG? Исправляем ситуацию

Автор: | 17.11.2021

О проблеме с открытием сайтов на различных устройствах в связи окончанием срока действия сертификата Let’s Encrypt IdenTrust DST Root CA X3, а также о способах ее решения я писал в этой статье. И если в случае с компьютером все решается просто и быстро, то на других устройствах — телефонах, планшетах, телевизорах и т.п. — исправить ситуацию иногда довольно сложно.

Например, совсем недавно столкнулся с невозможностью открыть некоторые сайты во встроенном браузере на телевизоре LG, работающем под управлением WebOS. Причина та же — устаревший сертификат и отсутствие нового. Несмотря на то, что телевизор периодически получает обновления своего ПО, производитель почему-то не торопится включать в эти обновления новые сертификаты безопасности. Что делать? Придется решать проблему самостоятельно.

Как всегда, поиск в интернете принес определенные результаты, но на этот раз они были не утешительные. Часть заявлений сводилась к тому, что самостоятельно решить проблему нельзя никоим образом, это может сделать только производитель. Вторая же часть описывала довольно трудоемкий и малопонятный процесс взлома телевизора и модификации его программной начинки. Впрочем, почитав разные источники и немного разобравшись в предлагаемых способах обновления сертификатов, я пришел к выводу, что все не так уж и сложно, и поэтому решил попробовать.

Далее я постараюсь как можно более просто и понятно объяснить, как обновить сертификаты безопасности на телевизорах LG под управлением WebOS. Основным источником информации для меня послужила вот эта тема на специализированном форуме, которая, в свою очередь, ссылается на первоисточник с другого известного форума. Под спойлерами буду прятать дополнительную информацию, которую можно пропустить.

Инструкция по обновлению сертификатов Let’s Encrypt на ТВ LG под управлением WebOS 3.5 или новее

Нам потребуется:

  • Сам телевизор, подключенный к интернету любым способом (WiFi или кабель)
  • Компьютер, подключенный к той же локальной сети, что и телевизор
  • Программа для подключения по протоколу Telnet или SSH, например, PuTTY

Также узнайте версию WebOS, установленную на ТВ — от нее будут зависеть некоторые дальнейшие действия. Узнать версию можно в меню Настройки -> Расширенные настройки -> Общие -> Сведения о телевизоре -> Информация о телевизоре. Будьте внимательны: на шаге «Сведения о телевизоре» высветится поле «Версия ПО», но это не то, что нам нужно. Версия операционной системы будет в поле «Версия телевизора webOS» и будет выглядеть примерно так: 3.9.0-62906.

Шаг первый: получаем root-права

Для того, чтобы иметь возможность что-то исправлять в файловой системе или программном коде телевизора, нам необходимо получить так называемые root-права, то есть права на полный доступ к установленной операционной системе. Без этого ничего сделать с сертификатами мы не сможем.

Коротко о рут-правах

Многие устройства для повседневного использования работают под управлением заложенного в них производителем программного обеспечения (ПО). Как правило, доступ пользователя к программному обеспечению устройства не предусматривается, не говоря уже о возможности его изменения. По этой причине производители всячески стараются защитить устройство от редактирования, а иногда даже и от просмотра его программной начинки. Но в некоторых случаях, например, сервисным инженерам при ремонте прибора требуется полный доступ к ПО. По своей сути, получение root-прав или рутирование устройства — это получение полного доступа к заложенному в нем ПО с возможностью его изменения. В связи с усилиями производителей по защите устройств от взлома получение рут-прав обычно не отличается простотой и зачастую использует найденные уязвимости в защите системы.

[свернуть]

В интернете можно найти несколько способов получения root-прав для разных версий WebOS, но самый простой с точки зрения малоподготовленного пользователя — это использование уже готового инструмента. В моем случае это был rootmy.tv, почитать о нем можно здесь (описание на английском). Итак, приступаем:

  1. Включаем телевизор, запускаем на нем браузер, заходим по адресу https://rootmy.tv
  2. После загрузки страницы сдвигаем вправо слайдер «slide to root». Его можно сдвинуть подключенной к ТВ мышкой или с помощью пульта Magic Remote. Если у вас обычный пульт, просто нажмите на нем цифру 5.
  3. Подтвердите появившееся предупреждение о безопасности.

После этих действий запустится автоматическое получение рут-прав, описание текущих стадий будет отображаться на экране. В процессе работы телевизор будет один или два раза перезагружен. В редких случаях ТВ вместо перезагрузки может выключиться, тогда его надо просто снова включить пультом. Вместе с получением рут-прав на ТВ будет также установлено приложение Homebrew Channel.

По завершении работы (весь процесс занял около минуты) ТВ предоставляет возможность неавторизованного доступа к своей операционной системе по протоколу Telnet. Для переключения на защищенный протокол SSH надо зайти в приложения, найти и запустить новое приложение Homebrew Channel, зайти в его настройки (значок в виде шестеренки в заголовке), включить протокол SSH и отключить протокол Telnet. Там же в настройках желательно отключить возможность автоматического обновления системы (Block system updates), чтобы не потерять в дальнейшем рут-права. После изменения настроек ТВ следует еще раз перезагрузить, для этого выберите пункт меню System reboot.

Подключаемся к ТВ с компьютера по протоколу SSH

Теперь мы можем управлять нашим ТВ с компьютера. Чтобы получить к нему доступ, делаем следующее:

  1. Узнаем IP-адрес телевизора. В зависимости от модели телевизора его можно найти в меню
    Настройки -> Основные -> Сеть -> Состояние сети -> Настройки IP
    или Настройки -> Сеть -> Проводное подключение -> Дополнительные настройки
    или Настройки -> Сеть -> Подключение к сети Wi-Fi -> Дополнительные настройки Wi-Fi

  2. Запускаем программу PuTTY на компьютере, подключенном к той же сети, что и ТВ (программу скачиваем здесь).
  3. Вводим в поле Host Name (or IP address) адрес нашего ТВ, выбираем Connection type SSH (если после получения рут-прав не отключали протокол Telnet на ТВ, то можно выбрать Other — Telnet).
  4. Нажимаем кнопку Open.

Откроется окно терминала, в котором можно вводить команды для управления телевизором. Первым делом при подключении по SSH необходимо ввести имя пользователя и пароль. По умолчанию после получения рут-прав через rootmy.tv имя пользователя root, пароль alpine. При вводе пароля нажимаемые символы не отображаются, даже в виде «звездочек». Подтверждение набора осуществляем клавишей Enter.

Обновляем сертификаты безопасности на ТВ

Теперь пошагово в терминале PuTTY задаем приведенные ниже команды и подтверждаем каждую нажатием клавиши Enter. Для ускорения работы и исключения ошибки в написании команд рекомендую полностью копировать текст команды и вставлять его в терминал. Копировать можете любым удобным вам способом (например, Ctrl+V), а вставлять в окно терминала нужно нажатием правой кнопки мыши, так как клавиатурные сокращения в нем не работают. По возможности буду приводить описание действия каждой команды.

1. Создаем на ТВ новую папку для размещения сертификатов

mkdir /media/cryptofs/root/

2. Копируем все содержимое папки /etc/ в нашу папку

cp -a /etc/ /media/cryptofs/root/

3. Копируем также папку с сертификатами в нашу папку

cp -a /usr/share/ca-certificates/ /media/cryptofs/root/ca-certificates/

3.1. Если у вас версия WebOS от 3.5 до 3.9 включительно, то копируем отдельно сертификаты браузера. Для других версий WebOS это делать не нужно

cp -a /var/palm/jail/com.webos.app.browser/usr/share/ca-certificates/ /media/cryptofs/root/ca-certificates_browser/ 

4. Запускаем текстовый редактор vi и открываем в нем файл со списком сертификатов

vi /media/cryptofs/root/etc/ca-certificates.conf

После этого на экране терминала отобразится содержимое файла ca-certificates.conf, а именно список установленных на устройстве сертификатов. Редактирование содержимого ведется почти как в обычном текстовом редакторе, но есть и отличия.

Работа с редактором vi. Прочитайте, если раньше не работали с ним!

Чтобы лучше разобраться с особенностями редактора vi, прочтите небольшую инструкцию. Скорее всего, она вам не понадобится, просто запомните основные действия:

  • для перемещения по тексту и прокрутки экрана используем клавиши со стрелками;
  • подведя курсор к нужному месту, входим в режим редактирования, нажав клавишу i;
  • печатаем нужный текст;
  • для выхода из режима редактирования с сохранением надо нажать Esc, а затем ZZ (два раза клавишу z с шифтом);
  • для выхода без сохранения нажимаем Esc, затем клавишу : (двоеточие, нажимаем с шифтом, иначе введем точку с запятой), затем q (уже без шифта) и Enter.

[свернуть]

5. Находим в тексте строку DST_Root_CA_X3.crt, переводим курсор в ее начало, нажимаем i для входа в режим редактирования и ставим перед строкой восклицательный знак (должно получиться !DST_Root_CA_X3.crt). Это означает, что сертификат не будет использоваться. Обратите внимание, что некоторые другие сертификаты тоже обозначены восклицательным знаком, то есть уже устарели.

6. Переходим в конец любой строки, нажимаем Enter для ввода новой строки и в ней печатаем:

mozilla/ISRG_Root_X1.crt

Редактирование файла закончено, нажимаем Esc и ZZ для сохранения и выхода из редактора.

7. Скачиваем из интернета новый сертификат безопасности и помещаем его в нашу папку с сертификатами

curl -k https://letsencrypt.org/certs/isrgrootx1.pem.txt | tee /media/cryptofs/root/ca-certificates/mozilla/ISRG_Root_X1.crt

8. Подключаем наши новые папки вместо старых

mount -o bind /media/cryptofs/root/etc /etc
mount -o bind /media/cryptofs/root/ca-certificates/ /usr/share/ca-certificates

9. Задаем команду для принудительного обновления сертификатов

update-ca-certificates

10. Если у вас версия WebOS от 3.5 до 3.9 включительно, то:

10.1. переходим в папку с сертификатами браузера

cd /media/cryptofs/root/ca-certificates_browser

10.2. удаляем старый сертификат

rm DST_Root_CA_X3.crt

10.3. закачиваем в папку новый сертификат

curl -k https://letsencrypt.org/certs/isrgrootx1.pem.txt | tee /media/cryptofs/root/ca-certificates_browser/mozilla/ISRG_Root_X1.crt

11. Теперь нужно отредактировать скрипт, который выполняется каждый раз при включении ТВ. Для этого снова используем редактор vi

vi /media/cryptofs/apps/usr/palm/services/com.palmdts.devmode.service/start-devmode.sh

Устанавливаем курсор клавишами со стрелками  после строки /bin/bash или в другое выбранное место скрипта (подробности под спойлером), нажимаем i для входа в режим редактирования и добавляем код:

# Set new certificates
mount -o bind /media/cryptofs/root/etc /etc
mount -o bind /media/cryptofs/root/ca-certificates/ /usr/share/ca-certificates

Куда именно вставлять код?

Будьте внимательны: при получении рут-прав через rootmy.tv, отключении автообновлений системы и применении прочих настроек через приложение Homebrew Channel содержимое скрипта меняется. В частности, там могут присутствовать условные операторы ветвления if, и в зависимости от условия код в разных местах скрипта будет работать или игнорироваться. Поэтому необходимо правильно выбрать место для вставки команды на использование обновленных сертификатов.

Вставку новых команд желательно сделать перед строкой telnetd -l /bin/sh, но таких строк в скрипте может быть несколько. Поэтому можно либо вставить перед каждой найденной, либо найти нужную и вставить только перед ней. Или еще лучше — вставить команды до оператора if, сразу после строки /bin/bash.

[свернуть]

11.1. Если у вас версия WebOS от 3.5 до 3.9 включительно, добавляем после указанных выше строк еще две:

sleep 50
mount -o bind /media/cryptofs/root/ca-certificates_browser/ /var/palm/jail/com.webos.app.browser/usr/share/ca-certificates/

Пример добавления строк

На скриншотах видно, что в скрипте имеются операторы ветвления, так что надо правильно выбрать место вставки. Например, в самом начале скрипта идет проверка на наличие файла-флага, используемого для восстановления работы ТВ при сбое в работе скрипта. Соответственно, команды между строками if и else будут выполнены только в случае сбоя.

А вот после строки else следуют команды, которые работают в нормальном режиме загрузки. Значит, сюда и надо добавлять наши команды. На скрине видно, что нужная нам секция # Set new certificates добавлена перед секцией # Block software update service, отвечающей за блокировку автообновления системы.

[свернуть]

Вставленные команды будут срабатывать при каждом включении телевизора и монтировать созданные нами папки с сертификатами в качестве стандартных системных папок.

Не забываем сохранить изменения в скрипте и выйти из редактора vi нажатием последовательности Esc + ZZ.

12. Вводим команду на перезагрузку ТВ

reboot

После перезагрузки телевизора открываем на нем браузер и вводим адрес сайта, который раньше выдавал ошибку из-за просроченного сертификата безопасности. Если сайт открывается, поздравляю: все прошло удачно!

Дополнительная информация

1. На тематических форумах, где обсуждалась описываемая проблема, встречаются рекомендации по установке еще двух сертификатов — ISRG_Root_X2.crt и Lets_Encrypt-R3.crt, но никто пока не сталкивался с тем, чтобы без них проблема не исчезала. Поэтому их не добавляем.

2. Если у вас возникают какие-то вопросы, почитайте источники, ссылки на которые приведены в начале статьи.

3. Если в процессе работы с PuTTY пропадет сетевое соединение, телевизор вдруг перейдет в спящий режим или отключится, не пугайтесь. Запомните последнюю выполненную команду, закройте программу PuTTY, включите ТВ, запустите PuTTY, подключитесь к ТВ, введите логин и пароль, а затем продолжите ввод команд со следующего пункта. Если отключение произошло при редактировании файла до его сохранения (пункты 4-6 или 11), то начните редактировать заново (пункт 4 или 11).

4. Ну и самое главное — помните, что все действия по модификации ПО вашего телевизора вы выполняете на свой страх и риск. Даже получение рут-прав может служить причиной для отказа в гарантийном обслуживании.

[свернуть]

 

За время, прошедшее с момента написания этой статьи, у меня появилась новая информация о некоторых особенностях добавления сертификатов на телевизоры LG. Этой информацией я решил поделиться с читателями.

Дополнительная информация (добавлено 3.01.2022)

После получения рут-прав через сервис rootmy.tv мой телевизор два раза переходил в режим восстановления. Оба раза это случалось после отключения электропитания. В режиме восстановления на экране ТВ каждые 15 секунд появляется сообщение

Failsafe mode! Open telnet and remove /var/luna/preferences/webosbrew_failsafe

Во всем остальном ТВ функционировал, как положено. Поэтому было решено просто убрать сообщение, для чего нужно удалить создаваемый для режима восстановления файл-флаг. Делается это следующим образом:

1. Запускаете PuTTY и подключаетесь к ТВ через протокол Telnet (SSH в режиме восстановления не работает).

2. Вводите команду

rm /var/luna/preferences/webosbrew_failsafe

и жмете на Enter. Таким образом удаляется файл, служащий признаком режима восстановления.

3. Вводите команду

reboot

и жмете на Enter. Телевизор перезагрузится, сообщение о режиме восстановления должно исчезнуть.

Можно также отключить режим восстановления через меню приложения Homebrew.

 

Также на некоторых моделях ТВ LG с версией WebOS 3.9 и меньше невозможно найти и заменить сертификаты браузера. В результате команды, описанные в пунктах 3.1 или 11.1 этой статьи, выполняются с ошибкой и реальная замена сертификатов не происходит. Дело в том, что нужные папки создаются динамически только при запуске браузера, поэтому при закрытом браузере подменить сертификаты не удается. В качестве решения предлагается добавить в стартовый скрипт команду запуска браузера в скрытом режиме, что позволяет затем проделать вышеописанные манипуляции для подмены сертификатов.

То есть, если при выполнении пункта 3.1 этой статьи вы получили сообщение об ошибке, то продолжайте выполнять остальные команды, а в пункте 11 самой первой командой вставьте

luna-send -n 1 -f luna://com.webos.applicationManager/launch '{"id": "com.webos.app.browser", "launchHidden":true, "params":{}}'

и потом все остальные, которые там приведены.

После этого перезапустите ТВ и повторите выполнение пунктов 3.1 и 10 (со всеми подпунктами). Затем снова перезагрузите ТВ.

На практике данную рекомендацию я не проверял, сведения взяты из этого источника.

[свернуть]
Share

Не открываются сайты на телевизоре LG? Исправляем ситуацию: 1 комментарий

Добавить комментарий

Ваш адрес email не будет опубликован.