Рекомендуется к deb пакетам с программным обеспечением, имеющим цифровую подпись, добавлять в зависимость пакет с открытым ключом, обеспечивающим работу ПО с цифровой подписью в режиме замкнутой программной среды.
Принцип хранения пакетов открытых ключей в сценарии подписи пакетов основан на использовании строки-маркера последней строки сценария вида "# Script EOF".
Примеры deb пакетов открытых ключей
Добавление пакетов открытых ключей из каталогов keyring-1.* выполняется с помощью сценария update-sign-script.sh:
./update-sign-script.sh sign-deb-package.sh |
Удаление пакетов открытых ключей из сценария подписи выполняется с помощью сценария clean-sign-script.sh:
| ./clean-sign-script.sh sign-deb-package.sh |
Для извлечения из своего тела необходимого пакета в сценарии подписи sign-deb-package.sh используется команда:
| sed -e '1,/^# Script EOF/d' < $0 | tar --strip-components=1 -zxv -C ${DIR_SIGNED} "${key_package}" |
Эта команда обеспечивает передачу на вход tar текста сценария, находящегося после строки "# Script EOF", с последующим извлечением данных из соответствующего каталога в архиве с учетом удаления первого компонента пути из имени извлеченного файла. Таким образом, при формировании подписи в ОС версии 1.4 приведенный пример сценария выполнит извлечение файла-пакета с открытым ключом из каталога keyring-1.4 архива tar.gz из состава сценария в каталог подписанных пакетов.
Для задания в сценарии подписи идентификаторов (отпечатков) используемых закрытых ключей используется переменная key_id. Каталог, в котором находится пакет открытого ключа из встроенного в сценария архива, задается значением переменной key_package. См. блок кода:
case "${os_release}" in
"SE 1.4 (smolensk)")
key_id="12345678"
key_package="keyring-1.4"
;;
"SE 1.5 (smolensk)")
key_id="87654321"
key_package="keyring-1.5"
;;
*) key_id="'unknown'"
echo "Unsupported OS release ('${os_release}')."
exit 1
;;
esac |
Примеры deb пакетов открытых ключей: