Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Информация |
---|
Данная статья предназначена в первую очередь для разработчиков, чьи программные продукты должны работать на компьютерах под управлением ОС Astra Linux Special Edition в условиях применения Замкнутой Программной Среды (ЗПС). Для того, чтобы ЗПС позволила запуск добавляемых разработчиками файлов (исполняемых файлов и файлов библиотек), запускаемые файлы должны быть подписаны. Предлагаемый сценарий позволяет автоматизировать задачу подписания файлов загружаемых библиотек (DLL) и проверки подписей. Подпись сохраняется непосредственно в подписанных файлах в формате, совместимом с ЗПС Astra Linux. |
Информация |
---|
В данной статье предполагается, что комплект ключей для подписи ПО уже получен. В ином случае требуется запросить такой комплект (см. Как получить ключи для подписи СПО).
|
Исходный код сценария
Раскрыть | |||||
---|---|---|---|---|---|
|
Установка пакетов и настройка ключей
Приведенный выше текст сценария скопировать в файл сделать этот файл исполняемым:
Command |
---|
chmod +x signdll |
Для нормальной работы сценария необходимо установить набор пакетов и библиотек (в Astra Linux Special Edition x.7 требуется подключение базового репозитория, в более ранних обновлениях Astra Linux Special Edition требуется подключение репозитория со средствами разработки, ). Команда для установки пакетов:
Command |
---|
sudo apt install python3 python3-pip python3-dev python-dev build-essential libssl-dev libxml2-dev libffi-dev libxslt1-dev zlib1g-dev |
После установки пакетов установить библиотеки Python:
Для обновлений Astra Linux Special Edition более ранних чем обновление x.7 сначала установить библиотеку cffi:
Command pip3 install cffi
Установить библиотеку xattr:
Command pip3 install xattr
Перед выполнением подписания импортировать секретный ключ (предполагается, что он уже получен):
Command |
---|
gpg --import --pinentry-mode=loopback --passphrase-file=<имя_файла_с_паролем_ключа> <имя_файла_с_ключом> |
Синтаксис вызова сценария
Command |
---|
signdll [-h] [-p PGOPTIONS] [-R] <имя_файла> |
Параметры вызова сценария:
- -p, — pgoptions передать следующие параметры программе bsign;
- -R — replace - заменить оригинальный DLL не изменяя его имя;
- -w — проверка подписи;
- -h — вывод краткой подсказки.
Пример вызова сценария
Для подписания одного файла
Пример вызова для подписания файла test.dll (предполагается, что сценарий и подписываемый файл находятся в одном каталоге):
Command |
---|
./signdll test.dll |
После вызова сценария ввести пароль из файла org_password.txt.
При успешном подписывании в текущем каталоге будет создан файл test_signed.dll.
Для подписания пакета файлов
Получить шестнадцатеричный идентификатор ключа командой:
Command |
---|
gpg -k |
Подписание всех файлов в текущем каталоге:
Command |
---|
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:
Command |
---|
./signdll -w test.dll |