Давно у нас в блоге мы не предлагали рецепты для разработчиков. Сегодня исправляемся.
Подпись ЗПС при сборке
Если вы разрабатываете для Astra Linux Special Edition и упаковываете ваше ПО в deb-пакеты, то наверняка сталкивались с задачей подписи исполняемых файлов для работы в ЗПС.
Производитель для этих целей предлагает скрипт, который распаковывает, подписывает и запаковывает. Устали от него? И мы когда-то устали. Поэтому сделали urbi et orbi утилиту dh_astrasign (ранее dh_gostsign). Утилита позволяет автоматизировать всю рутину по подписи, сохраняя рекомендации производителя.
Время идёт, обновляется Астра. И в новых версиях Astra Linux Special Edition — 1.7 и 1.8 появилась возможность всё делать элегантнее и проще.
И вуаля, встречайте…
dh-astrasign
dh-astrasign — это новая версия dh-gostsign, которая:
- Была переименована в связи с широким распространением механизма цифровых подписей в Linux. Название должно однозначно указывать на целевую ОС.
- Использованы механизмы подключения, появившиеся в 12-ой версии DebHelper.
На втором пункте остановимся подробнее. dh-astrasign это подключаемый модуль для системы сборки DebHelper. Он добавляет в последовательность сборки deb-пакета вызов команды dh_astrasign, которая подписывает все найденные файлы ELF. Данная команда встраивается в последовательность DebHelper после выполнения dh_strip.
Подключение дополнительный модулей производится с помощью параметра --with
команды dh в файле debian/rules:
%: dh $@ --with moduleN --with astrasign
В версии DebHelper 12 появился способ включения модулей без модификации файла debian/rules. Если в сборочных зависимостях пакета встречается пакет с названием dh-sequence-модуль, то DebHelper автоматически подключит этот модуль при сборке.
Поэтому теперь подписать бинарники любого пакета требуют минимального вмешательства: достаточно добавить пакет dh-sequence-astrasign
в Build-Depends
.
Инструкция
Делай раз. Проверьте наличие подписи с ключём командой
gpg --list-keys
Делай два. Добавьте зависимость для сборки вашего пакета (debian/control):
Build-Depends: dh-sequence-astrasign
Что еще нужно знать
- Команда dh_astrasign следует всем канонам devscripts и понимает стандартные аргументы команд и флаги
DH_VERBOSE
. - При подписи ставит отметку времени из
SOURCE_DATE_EPOCH
. - Может подбирать идентификатор необходимой подписи из переменной окружения
ASTRASIGN
. - Собранный пакет dh-astrasign-lab50 для ALSE 1.7/1.8 лежит в нашем репозитории.
- Все остальное искать здесь: gitlab.com/lab50/dh-gostsign.