|
Данная статья предназначена в первую очередь для разработчиков, чьи программные продукты, разработанные в среде Windows, должны работать на компьютерах под управлением ОС Astra Linux Special Edition в условиях применения Замкнутой Программной Среды (ЗПС). Для того, чтобы ЗПС позволила запуск добавляемых разработчиками файлов (исполняемых файлов и файлов библиотек), запускаемые файлы должны быть подписаны. Предлагаемый сценарий позволяет автоматизировать задачу подписания файлов загружаемых библиотек (DLL) и проверки подписей. Подпись сохраняется непосредственно в подписанных файлах в формате, совместимом с ЗПС Astra Linux. См. также Wine: часто задаваемые вопросы. Это способ подписания может также применяться к файлам формата elf (исполняемые файлы и библиотеки Astra Linux). Для подписания таких файлов следует использовать опцию -R сценария. |
Начиная с обновлений БЮЛЛЕТЕНЬ № 2023-0426SE17 (оперативное обновление 1.7.4) и БЮЛЛЕТЕНЬ № 2023-0727SE47 (оперативное обновление 4.7.4) в составе базового репозитория доступен пакет bsign-aliens. В Astra Linux Special Edirion 1.8 этот пакет доступен в составе расширенного репозитория.
Пакет bsign-aliens предоставляет инструменты командной строки bsign-dll и bsign-dot-net, выполняющие подписание файлов .dll и .net соответственно.
Синтаксис команды для подписания dll файлов:
| bsign-dll [-h] [-p <параметры>] [-R] [-w] <имя_файла_dll>.dll |
Параметры команды:
Для корректной работы подписанных файлов в замкнутой программной среде (ЗПС, необходимо:
|
Синтаксис команды для подписания dot-net файлов:
| bsign-dot-net [-h] [-p <параметры>] <имя_файла> |
Параметры команды bsign-dot-net:
Далее предполагается, что:
|
Сценарий применим в обновлениях Astra Linux, не включающих в свой состав пакет bsigh-aliens (обновления, выпущенных до оперативных обновлений 1.7.4/4.7.4). Для применения сценария:
Установить набор пакетов и библиотек. Команда для установки пакетов:
| 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 |
Файл со сценарием для загрузки: signdll.
|
signdll [-h] [-p PGOPTIONS] [-R] <имя_файла> |
Параметры вызова сценария:
Пример вызова для подписания файла test.dll (предполагается, что сценарий и подписываемый файл находятся в одном каталоге):
| ./signdll test.dll |
После вызова сценария ввести пароль из файла org_password.txt.
При успешном подписывании в текущем каталоге будет создан файл test_signed.dll.
Получить шестнадцатеричный идентификатор ключа командой:
| gpg -k |
Подписание всех файлов в текущем каталоге:
| find . -name "*.dll" -exec ./signdll -R --pgoptions="--batch --pinentry-mode=loopback --passphrase-file=org_password.txt --default-key=1234...CDEF" {} \; |
где default-key - шестнадцатеричный идентификатор ключа. В данном примере использован ключ -R, который позволяет встроить подпись в подписываемый файл не создавая его копию.
Пример проверки подписи файла test.dll:
| ./signdll -w test.dll |