Opened 33 hours ago
Last modified 10 hours ago
#733 new баг
Signature check failed при попытке обновления через веб-интерфейс.
Reported by: | san | Owned by: | alx |
---|---|---|---|
Priority: | средний | Milestone: | 1 очередь |
Component: | sw | Keywords: | |
Cc: |
Description
На свежепрошитых по методике платах SW-01 несколько раз наблюдалась "странность" - при попытке обновления ПО через веб интерфейс плата говорила Signature check failed
, однако если в консоли сказатьopkg update
, то ответ Signature check passed.
Вот три зафиксированых случая воспроизведения.
- 28.06.2024 - alx обновил плату через консоль и больше проблема не проявлялась
- 23.08.2024 - Женя перешил плату по методике и больше проблема не проявлялась
- 21.01.2025 - плата в таком состоянии доступна по адресу 192.168.0.227 и с ней можно проводить эксперименты
Платы прошивались по методике разными сотрудниками(первые две Женя, третья Денис) по их словам, методику они не нарушали. Кроме этих плат, в те-же дни было прошито ещё множество плат SW-01, которые ведут себя нормально.
Консоль:
root@sw01:~# opkg update Downloading https://repo.adc-line.ru/sw-01/ipk/all/Packages.gz. Inflating https://repo.adc-line.ru/sw-01/ipk/all/Packages.gz. Updated list of available packages in /var/lib/opkg/all. Downloading https://repo.adc-line.ru/sw-01/ipk/all/Packages.sig. Signature check passed. Downloading https://repo.adc-line.ru/sw-01/ipk/armv5te/Packages.gz. Inflating https://repo.adc-line.ru/sw-01/ipk/armv5te/Packages.gz. Updated list of available packages in /var/lib/opkg/armv5te. Downloading https://repo.adc-line.ru/sw-01/ipk/armv5te/Packages.sig. Signature check passed. Downloading https://repo.adc-line.ru/sw-01/ipk/at91sam9g20ek/Packages.gz. Inflating https://repo.adc-line.ru/sw-01/ipk/at91sam9g20ek/Packages.gz. Updated list of available packages in /var/lib/opkg/at91sam9g20ek. Downloading https://repo.adc-line.ru/sw-01/ipk/at91sam9g20ek/Packages.sig. Signature check passed.
Веб-интерфейс:
Downloading https://repo.adc-line.ru/sw-01/ipk/all/Packages.gz. Inflating https://repo.adc-line.ru/sw-01/ipk/all/Packages.gz. Updated list of available packages in /var/lib/opkg/all. Downloading https://repo.adc-line.ru/sw-01/ipk/all/Packages.sig. Signature check failed. Remove wrong Signature file. Downloading https://repo.adc-line.ru/sw-01/ipk/armv5te/Packages.gz. Inflating https://repo.adc-line.ru/sw-01/ipk/armv5te/Packages.gz. Updated list of available packages in /var/lib/opkg/armv5te. Downloading https://repo.adc-line.ru/sw-01/ipk/armv5te/Packages.sig. Signature check failed. Remove wrong Signature file. Downloading https://repo.adc-line.ru/sw-01/ipk/at91sam9g20ek/Packages.gz. Inflating https://repo.adc-line.ru/sw-01/ipk/at91sam9g20ek/Packages.gz. Updated list of available packages in /var/lib/opkg/at91sam9g20ek. Downloading https://repo.adc-line.ru/sw-01/ipk/at91sam9g20ek/Packages.sig. Signature check failed. Remove wrong Signature file.
Change History (5)
comment:1 by , 28 hours ago
comment:2 by , 28 hours ago
А, кажется я вспомнил (как только отправил комментарий)! :) Там было что-то с форматом базы открытых ключей, не то с форматом базы trust.db - gpg в плате не понимал формат базы, созданной на хосте (потому что на хосте gpg более новой версии). И я сделал, чтобы база создавалась уже в плате. Кажется так...
Сейчас попробую посмотреть, что там с этими ключами...
comment:3 by , 26 hours ago
Проверкой установлены следующие факты:
- Файл ключей
/etc/opkg/trusted.pgp
в плате правильный, командаopkg-key list
показывает правильный ключ, ошибок/предупреждений не выдает. - Перезагрузка платы на ситуацию не влияет - веб-интерфейс по-прежнему показывает плохую подпись.
- Рестарт swd из веб-интерфейса на ситуацию не влияет - веб-интерфейс по-прежнему показывает плохую подпись.
- После рестарта swd из консоли проверка подписей проходит успешно.
- После перезагрузки платы восстанавливается исходное состояние - ошибка проверки подписей.
Предварительный вывод - различие в поведении opkg вызвано различием окружения стартового скрипта, который запускает swd при загрузке платы, и окружения сеанса пользователя при входе через ssh и логин.
Переменные окружения на момент старта swd такие:
ARGS='' CONSOLE='/dev/console' DAEMON='/usr/sbin/swd' DESC='SW daemon' HOME='/' IFS=' ' INIT_VERSION='sysvinit-2.86' NAME='swd' OPTIND='1' PATH='/bin:/usr/bin:/sbin:/usr/sbin' PIDFILE='/var/run/swd.pid' PPID='261' PREVLEVEL='N' PS1='\w \$ ' PS2='> ' PS4='+ ' PWD='/' RUNLEVEL='5' TERM='linux' VERBOSE='no' previous='N' runlevel='5'
На первом подозрении - переменные PATH
и HOME
.
comment:4 by , 26 hours ago
Экспериментально установлено, что добавление в стартовый скрипт swd строки
HOME=/home/root
чинит проверку подписей. Почему, пока не понимаю, и что с этим знанием делать, я тоже пока не знаю...
Наверное просто добавлю это в стартовый скрипт и забуду. :)
comment:5 by , 10 hours ago
В каналоге /.gnupg
обнаружены следующие файлы:
root@sw01:~# ls -la /.gnupg/ drwx------ 2 root root 688 Jan 21 14:49 . -rw-r--r-- 1 root root 16 Jan 21 06:24 .#lk0xea1c0.sw01.325 -rw-r--r-- 1 root root 16 Jan 21 06:24 .#lk0xec440.sw01.325 -rw-r--r-- 1 root root 16 Jan 21 06:24 .#lk0xec6d8.sw01.325 drwxrwxr-x 17 root root 1248 Jan 21 06:24 .. -rw------- 1 root root 543 Jan 21 06:24 pubring.gpg -rw------- 1 root root 0 Jan 21 06:24 pubring.gpg~ -rw------- 1 root root 0 Jan 21 06:24 secring.gpg -rw------- 1 root root 0 Jan 21 06:24 trustdb.gpg
Необычным выглядит наличие неудаленных лок-файлов и пустой файл trustdb.gpg.
Экспериментально установлено, что после удаления пустого файла trustdb.gpg проверка подписей начинает работать, при этом создается нормальный (непустой) файл trustdb.gpg.
По какой причине файл trustdb.gpg оказался пустым, для меня пока загадка. Наличие неудаленных лок-файлов наводит на мысль о том, что по каким-то причинам процесс gpg был убит в процессе работы...
Мне кажется, что я что-то уже делал для решения этой проблемы. Ты, случайно, не помнишь, что это было и где? Может тикет такой уже был?