Table of Contents |
---|
Общая информация
Данная инструкция описывает подпись файлов с помощью
...
утилиты osslsigncode и модулей pkcs11 engine
...
и rtengine.
...
Команды в инструкции выполняются Данный сценарий выполняется на операционной системе Ubtuntu системе Ubtuntu 24.04.2. В зависимости от вашей операционной системы, команды могут отличаться.
...
Подготовка к работе
Для выполнения действий в этой инструкции понадобятся:
- библиотека PKCS#11;
- утилита osslsigncode;
- утилита pkcs11-tool из комплекта OpenSC.
Чтобы установить необходимое программное обеспечение:
- Установите библиотеку PKCS#11:
- Перейдите в Центр загрузки.
- Нажмите Пользователям GNU/Linux и в раскрывшемся списке выберите версию для своей ОС и архитектуры.
- Примите лицензионное соглашение и дождитесь автоматического скачивания файла.
Откройте терминал в папке со скачанным файлом и выполните команду:
Code Block sudo dpkg -i librtpkcs11ecp_<версия>_<архитектура>.deb
Установите osslsigncode и комплект OpenSC:
Code Block sudo apt install osslsigncode opensc
Подписание при помощи утилиты osslsigncode и pkcs11 engine (OpenSC)
Проверка версии OpenSSL
Для подписания с помощью pkcs11 engine от OpenSC необходима версия OpenSSL
...
3.0.15 или выше. Чтобы посмотреть версию OpenSSL, в терминале выполните команду:
Code Block |
---|
openssl version |
Если установленная версия ниже 3.0.15 и обновить ее системными средствами (например, sudo apt update && sudo apt upgrade
) не получается, установите нужную версию вручную по инструкции в репозитории OpenSSL.
Генерация ключевой пары и создание сертификата
Tip |
---|
Если на Рутокене уже есть ключевая пара с сертификатом, можно переходить к подписанию файла. |
Сгенерируйте ключевую пару на Рутокене:
Code Block pkcs11-tool --module
/usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:
2048 -l --
id 45id 45
Сгенерируйте самоподписанный сертификат:
Code Block openssl req -utf8 -x509 -keyform engine -key
openssl req -utf8 -x509 -keyform engine -key "pkcs11:your_pkcs11_uri" -engine
rtengine pkcs11engine -out cert.cer -subj "/C=<страна>/ST=<регион>/L=<населенный_пункт>/O=<организация>/OU=<отдел>/CN=<ФИО>/emailAddress=<email>"
Сохраните сертификат на Рутокен
.:
Code Block pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.cer --id
4545
Сгенерируйте ключевую пару и сертификат на Рутокен любым удобным для вас способом.
Если на вашем устройстве нет ключевой пары, можете воспользоваться следующими командами:
pkcs11-tool --module
2048
Для генерации самоподписанного сертификата, выполните команду:
Anchor pkcs11_engine_sign pkcs11_engine_sign
Подписание файла
Если на вашем устройстве одна ключевая пара, воспользуйтесь следующей командой для подписания файла
...
:
Code Block |
---|
osslsigncode sign -pkcs11engine /path/to/pkcs11.so -pkcs11module / |
...
path/ |
...
to/librtpkcs11ecp.so -pkcs11cert pkcs11: |
...
your_pkcs11_uri -key "pkcs11: |
...
your_pkcs11_uri" -in /path/to/file -out /path/to/signed_file |
...
Пример вывода команды:
Code Block |
---|
osslsigncode sign -pkcs11engine /usr/lib/x86_64-linux-gnu/engines-3/pkcs11.so -pkcs11module /usr/lib/librtpkcs11ecp.so -pkcs11cert pkcs11:model=Rutoken%20ECP -key pkcs11:model=Rutoken%20ECP -in /home/user/test.exe -out /home/user/test_signed.exe Engine "pkcs11" set. Enter PKCS#11 token PIN for Rutoken ECP <no label>: Succeeded |
Если у вас несколько ключевых пар на устройстве, воспользуйтесь инструкцией Использование ключей на Рутокене, чтобы указать нужную ключевую пару.
Подписание при помощи утилиты osslsigncode и rtengine
...
Установка и настройка rtengine
- Перейдите в Центр загрузки.
- Выберите версию модуля интеграции для своей версии OpenSSL.
- Примите лицензионное соглашение и дождитесь автоматического скачивания файла.
Откройте терминал в папке со скачанным файлом и выполните команды:
Code Block unzip rtengine-<версия>.zip sudo apt install /rtengine-<версия>/rtengine/<версия>
Для работы с Рутокен ЭЦП, скачайте нашу библиотеку PKCS#11 и установить её:/Linux/x64/packages/
librtengine3_3.3.1-1_amd64.deblibrtengine<версия>_<архитектура>.deb
Проверьте версию утилиты osslsigncode:
Code Block osslsigncode --version
Если установлена версия
Для версии osslsigncode 2.9 или ниже,
необходимо необходимо переименовать
librtengine.so
в в
rtengine.so
. Для этого выполните команду:Code Block sudo mv /usr/lib/x86_64-linux-gnu/engines-3/librtengine.
so so /usr/lib/x86_64-linux-gnu/engines-3/rtengine.so
Для настройки OpenSSL для работы с rtenine, воспользуйтесь инструкцией Настройте OpenSSL по инструкции Установка и настройка OpenSSL для работы с rtengine.
Обратите внимание, что Note Для работы с osslsigncode версии 2.9 или ниже в конфигурационном файле openssl.cnf необходимо указать актуальный путь до
rtengine.so
, вместо
librtengine.so
.
sudo dpkg -i librtpkcs11ecp_X.X.X.X_amd64.deb
Установите osslsigncode:
sudo apt install osslsigncode
Скачайте и установите rtengine:
unzip rtengine-X.X.X.zip
sudo apt install /home/user/Downloads/rtengine/X.X.X
Процесс установки может отличаться в зависимости от вашей операционной системы.
Генерация ключевой пары и создание сертификата
Tip |
---|
Если на Рутокене уже есть ключевая пара с сертификатом, можно переходить к подписанию файла. |
Сгенерируйте ключевую пару на Рутокене:
Code Block pkcs11-tool --module
Сгенерируйте ключевую пару и сертификат на Рутокен любым удобным для вас способом./usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:
2048 -l --
id 3132id 45
Сгенерируйте самоподписанный сертификат:
Code Block openssl req -utf8 -x509 -keyform engine -key
Для генерации самоподписанного сертификата, выполните команду:"pkcs11:your_pkcs11_uri" -engine rtengine -out cert.
cer cer -subj "/C=<страна>/ST=<регион>/L=<населенный_пункт>/O=<организация>/OU=<отдел>/CN=<ФИО>/emailAddress=<email>"
Сохраните сертификат на Рутокен:
Code Block pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.cer --id 45
Если на вашем устройстве нет ключевой пары, можете сгенерировать её любым удобным для вас способом, либо воспользоваться командой:
pkcs11-tool --module
2048
openssl req -utf8 -x509 -keyform engine -key
Для подписания файла с помощью osslsigncode и pkcs11 engine
Anchor | ||||
---|---|---|---|---|
|
Подписание файла
Чтобы подписать файл, выполните команду:
Code Block |
---|
osslsigncode sign -engine rtengine -engineCtrl pkcs11_path:/path/to/librtpkcs11ecp. |
...
so -certs /path/to/cert.cer - |
...
key "pkcs11:your_pkcs11_uri" -in /path/to/file -out /path/to/signed_file |
...
Пример вывода команды:
Code Block |
---|
osslsigncode sign -engine rtengine -engineCtrl pkcs11_path:/usr/lib/librtpkcs11ecp.so -certs cert.pem -key pkcs11:model=Rutoken%20ECP -in /home/user/test.exe -out /home/user/test_signed.exe |
...
Engine "pkcs11" set. |
...
Enter PKCS#11 token PIN for Rutoken ECP <no label>: |
...
Succeeded |
Для использования ключей с токена необходимо специальным образом указывать идентификатор ключа. Подробнее идентификаторы ключей описаны в инструкции Использование ключей на Рутокене.