Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Общая информация

Данная инструкция описывает подпись файлов с помощью

...

утилиты osslsigncode и модулей pkcs11 engine

...

и rtengine.

...

 

Команды в инструкции выполняются Данный сценарий выполняется на операционной системе Ubtuntu системе Ubtuntu 24.04.2. В зависимости от вашей операционной системы, команды могут отличаться.

...

Подготовка к работе

Для выполнения действий в этой инструкции понадобятся:

  • библиотека PKCS#11;
  • утилита osslsigncode;
  • утилита pkcs11-tool из комплекта OpenSC.

Чтобы установить необходимое программное обеспечение:

  1. Установите библиотеку PKCS#11:
    1. Перейдите в Центр загрузки.
    2. Нажмите Пользователям GNU/Linux и в раскрывшемся списке выберите версию для своей ОС и архитектуры.
    3. Примите лицензионное соглашение и дождитесь автоматического скачивания файла.
    4. Откройте терминал в папке со скачанным файлом и выполните команду:

      Code Block
      sudo dpkg -i librtpkcs11ecp_<версия>_<архитектура>.deb


  2. Установите 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

Если на Рутокене уже есть ключевая пара с сертификатом, можно переходить к подписанию файла.

  1. Сгенерируйте ключевую пару на Рутокене:

    Code Block
    pkcs11-tool --module 

  2. Сгенерируйте ключевую пару и сертификат на Рутокен любым удобным для вас способом.
    Если на вашем устройстве нет ключевой пары, можете воспользоваться следующими командами:
    pkcs11-tool --module
  3. /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:
  4. 2048 
  5. 2048 -l --
  6. id 45
    Для генерации самоподписанного сертификата, выполните команду:
  7. id 45


  8. Сгенерируйте самоподписанный сертификат:

    Code Block
    openssl req -utf8 -x509 -keyform engine -key 
  9. openssl req -utf8 -x509 -keyform engine -key
  10. "pkcs11:your_pkcs11_uri" -engine
  11. rtengine
  12.  pkcs11engine -out cert.cer -subj "/C=<страна>/ST=<регион>/L=<населенный_пункт>/O=<организация>/OU=<отдел>/CN=<ФИО>/emailAddress=<email>"
  13.  
  14.  


  15. Сохраните сертификат на Рутокен

  16. .
  17. :

    Code Block
    pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.cer --id
  18.  45
  19.  45

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

  1. Перейдите в Центр загрузки.
  2. Выберите версию модуля интеграции для своей версии OpenSSL.
  3. Примите лицензионное соглашение и дождитесь автоматического скачивания файла.
  4. Откройте терминал в папке со скачанным файлом и выполните команды:

    Code Block
    unzip rtengine-<версия>.zip
    sudo apt install /rtengine-<версия>/rtengine/<версия>
  5. Для работы с Рутокен ЭЦП, скачайте нашу библиотеку PKCS#11 и установить её:
    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
  6. /Linux/x64/packages/
  7. librtengine3_3.3.1-1_amd64.deb
    Процесс установки может отличаться в зависимости от вашей операционной системы.
  8. librtengine<версия>_<архитектура>.deb


  9. Проверьте версию утилиты osslsigncode:

    Code Block
    osslsigncode --version
    

    Если установлена версия

  10. Для версии osslsigncode
  11. 2.9 или ниже,

  12. необходимо
  13.  необходимо переименовать librtengine.so

  14. в
  15.  в rtengine.so. Для этого выполните команду:

    Code Block
    sudo mv /usr/lib/x86_64-linux-gnu/engines-3/librtengine.
  16. so 
  17. so /usr/lib/x86_64-linux-gnu/engines-3/rtengine.so
  18. Для настройки OpenSSL для работы с rtenine, воспользуйтесь инструкцией 

  19. Настройте OpenSSL по инструкции Установка и настройка OpenSSL для работы с rtengine.

  20. Обратите внимание, что
  21. Note

    Для работы с osslsigncode версии 2.9 или ниже в конфигурационном файле openssl.cnf необходимо указать актуальный путь до rtengine.so

  22. ,
  23. вместо librtengine.so.

Генерация ключевой пары и создание сертификата

Tip

Если на Рутокене уже есть ключевая пара с сертификатом, можно переходить к подписанию файла.

  1. Сгенерируйте ключевую пару на Рутокене:

    Code Block
    pkcs11-tool --module 
  2. Сгенерируйте ключевую пару и сертификат на Рутокен любым удобным для вас способом.
    Если на вашем устройстве нет ключевой пары, можете сгенерировать её любым удобным для вас способом, либо воспользоваться командой:
    pkcs11-tool --module
  3. /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:
  4. 2048 
  5. 2048 -l --
  6. id 3132
  7. id 45


  8. Сгенерируйте самоподписанный сертификат:

    Code Block
    openssl req -utf8 -x509 -keyform engine -key 
  9. Для генерации самоподписанного сертификата, выполните команду:
    openssl req -utf8 -x509 -keyform engine -key
  10. "pkcs11:your_pkcs11_uri" -engine rtengine -out cert.
  11. cer 
  12. cer -subj "/C=<страна>/ST=<регион>/L=<населенный_пункт>/O=<организация>/OU=<отдел>/CN=<ФИО>/emailAddress=<email>"

  13. Для подписания файла с помощью osslsigncode и pkcs11 engine
  14.  


  15. Сохраните сертификат на Рутокен:

    Code Block
    pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.cer --id 45

Anchor
rtengine_sign
rtengine_sign

Подписание файла

Чтобы подписать файл, выполните команду:

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

Для использования ключей с токена необходимо специальным образом указывать идентификатор ключа. Подробнее идентификаторы ключей описаны в инструкции Использование ключей на Рутокене.