Давно у нас в блоге мы не предлагали рецепты для разработчиков. Сегодня исправляемся.
Подпись ЗПС при сборке
Если вы разрабатываете для Astra Linux Special Edition и упаковываете ваше ПО в deb-пакеты, то наверняка сталкивались с задачей подписи исполняемых файлов для работы в ЗПС.
Производитель для этих целей предлагает скрипт, который распаковывает, подписывает и запаковывает. Устали от него? Мы сделали новый!
dh-gostsign
Не первый год в разработке? Все правильно: это модуль для devscripts, который подписывает ELF-файлы в процессе сборки пакета. Работает это так: после всех модификаций файлов, перед последними шагами сборки, запускается наша команда dh_gostsign. Утилита рыскает по содержимому будущих deb-пакетов и подписывает найденные ELF-файлы.
Какие плюсы? А вот они:
- Пакеты штатно собираются и пакуются стандартными средствами, без магии с контрольными суммами, правами и пользователями.
- Инструмент умеет подписывать с соблюдением требований по повторяемости сборки.
- Применяет грубую силу для обхода глюков bsign (а их хватает при работе не в лабораторных условиях).
Инструкция
Делай раз. Проверьте наличие подписи с ключём командой
gpg --list-keys
Делай два. Добавьте зависимость для сборки вашего пакета (debian/control):
Build-Depends: dh-gostsign-lab50
Делай три. В последовательность сборки debhelper’а (debian/rules) добавьте модуль gostsign:
%: dh $@ --with gostsign
Что еще нужно знать
- Команда dh_gostsign следует всем канонам devscripts и понимает стандартные аргументы команд и флаги
DH_VERBOSE
. - При подписи ставит отметку времени из
SOURCE_DATE_EPOCH
. - Может подбирать идентификатор необходимой подписи из переменной окружения
GOSTSIGN
. - Собранный пакет dh-gostsign-lab50 для ALSE 1.6 лежит в нашем репозитории.
- Все остальное искать здесь: gitlab.com/lab50/dh-gostsign.