Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-10 (очередное обновление 1.8)
- Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
Astra Linux Common Edition 2.12
Данная статья предназначена в первую очередь для разработчиков, чьи программные продукты, разработанные в среде Windows, должны работать на компьютерах под управлением ОС Astra Linux Special Edition в условиях применения Замкнутой Программной Среды (ЗПС). Для того, чтобы ЗПС позволила запуск добавляемых разработчиками файлов (исполняемых файлов и файлов библиотек), эти файлы должны быть подписаны. Предлагаемые далее инструменты позволяют автоматизировать задачу подписания файлов загружаемых библиотек (DLL) и проверки подписей. Подпись сохраняется непосредственно в подписанных файлах в формате, совместимом с ЗПС Astra Linux. См. также Wine: часто задаваемые вопросы.
Пакет bsign-aliens
Начиная с обновлений БЮЛЛЕТЕНЬ № 2023-0426SE17 (оперативное обновление 1.7.4) и БЮЛЛЕТЕНЬ № 2023-0727SE47 (оперативное обновление 4.7.4) в составе базового репозитория доступен пакет bsign-aliens. В Astra Linux Special Edirion 1.8 этот пакет доступен в составе основного репозитория.
Пакет bsign-aliens предоставляет инструменты командной строки:
- bsign-dll — инструмент для подписывания файлов .dll (формат PE). Доступен как отдельный инструмент только в Astra Linux Specail Edition 1.7. В Astra Linux Specail Edition 1.8 функционал подписания файлов формата PE интегрирован в инструмент bsign-integrator.
- bsign-dot-net — инструмент для подписывания файлов .net.
Для обновлений, в которых пакет bsign-aliens недоступен, далее предлагается сценарий автоматизации подписания.
Установка пакета:
Инструмент bsign-dll
Синтаксис команды для подписания dll файлов:
- -h, --help — показать подсказку по командам;
- -p <параметры>, --pgoptions <параметры> — передать следующие параметры программе bsign;
- -R, --replace — заменить оригинальный DLL не изменяя его имя;
- -w, --show-info — показать информацию о подписи;
- -h - вывод краткой подсказки
Инструмент bsign-dot-net
Синтаксис команды для подписания dot-net файлов:
- -h, --help — показать подсказку по командам;
- -p, --pgoptions — передать следующие параметры программе bsign.
Сценарий автоматизации подписания файлов DLL и проверки подписи
Сценарий предназначен для использования в обновлениях Astra Linux, в которых недоступен пакет bsign-aliens.
Сценарий может также применяться к файлам формата elf (исполняемые файлы и библиотеки Astra Linux). Для подписания таких файлов следует использовать опцию -R сценария.
Далее предполагается, что:
- Комплект ключей для подписи ПО уже получен. В ином случае требуется запросить такой комплект (см. Как получить ключи для подписи СПО).
- Текст сценария скопирован в файл signdll.
- ЗПС выключена, так как используемые сценарием библиотеки Python ciffi и xattr устанавливаются из стороннего репозитория и не подписаны.
- Для установки библиотек Python cffi и xattr настроен доступ в Интернет.
Сценарий применим в обновлениях Astra Linux, не включающих в свой состав пакет bsigh-aliens (обновления, выпущенных до оперативных обновлений 1.7.4/4.7.4). Для применения сценария:
- Подключить репозитории:
- в Astra Linux Special Edition 1.8 — расширенный репозиторий;
- в Astra Linux Special Edition x.7 — базовый репозиторий;
- в более ранних обновлениях Astra Linux Special Edition — репозиторий со средствами разработки.
Установить набор пакетов и библиотек. Команда для установки пакетов:
sudo apt install python3 python3-pip python3-dev python-dev build-essential libssl-dev libxml2-dev libffi-dev libxslt1-dev zlib1g-dev python3-xattr python3-pyelftoolsДля обновлений Astra Linux Special Edition более ранних чем обновление x.7 установить библиотеку python cffi:
sudo apt install python3-cffiПеред выполнением подписания импортировать секретный ключ (предполагается, что он уже получен):
gpg --import --pinentry-mode=loopback --passphrase-file=org_password.txt org_secret.gpg
Исходный код сценария
Синтаксис вызова сценария
Параметры вызова сценария:
- -p, — pgoptions передать следующие параметры программе bsign;
- -R — replace - заменить оригинальный DLL не изменяя его имя. Позволяет также подписывать файлы формата elf;
- -w — проверка подписи;
- -h — вывод краткой подсказки.
Примеры вызова сценария
Для подписания одного файла
Пример вызова для подписания файла test.dll (предполагается, что сценарий и подписываемый файл находятся в одном каталоге):
После вызова сценария ввести пароль из файла org_password.txt.
При успешном подписывании в текущем каталоге будет создан файл test_signed.dll.
Для подписания пакета файлов
Получить шестнадцатеричный идентификатор ключа командой:
Для проверки подписи файла
Пример проверки подписи файла test.dll: