Opened 30 hours ago

Last modified 7 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.
Вот три зафиксированых случая воспроизведения.

  1. 28.06.2024 - alx обновил плату через консоль и больше проблема не проявлялась
  2. 23.08.2024 - Женя перешил плату по методике и больше проблема не проявлялась
  3. 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 alx, 25 hours ago

Мне кажется, что я что-то уже делал для решения этой проблемы. Ты, случайно, не помнишь, что это было и где? Может тикет такой уже был?

comment:2 by alx, 25 hours ago

А, кажется я вспомнил (как только отправил комментарий)! :) Там было что-то не то с форматом базы открытых ключей, не то с форматом базы trust.db - gpg в плате не понимал формат базы, созданной на хосте (потому что на хосте gpg более новой версии). И я сделал, чтобы база создавалась уже в плате. Кажется так...

Сейчас попробую посмотреть, что там с этими ключами...

Last edited 25 hours ago by alx (previous) (diff)

comment:3 by alx, 23 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 alx, 23 hours ago

Экспериментально установлено, что добавление в стартовый скрипт swd строки

HOME=/home/root

чинит проверку подписей. Почему, пока не понимаю, и что с этим знанием делать, я тоже пока не знаю...

Наверное просто добавлю это в стартовый скрипт и забуду. :)

comment:5 by alx, 7 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 был убит в процессе работы...

Note: See TracTickets for help on using tickets.