Подписание при помощи утилиты osslsigncode и pkcs11 engine.


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

  1. Для работы с Рутокен ЭЦП, скачайте нашу библиотеку PKCS#11 и установить её:
    sudo dpkg -i librtpkcs11ecp_X.X.X.X_amd64.deb

    Установите osslsigncode:
    sudo apt install osslsigncode 

  2. Для подписания файла с помощью osslsigncode и pkcs11 engine от opensc, необходимо чтобы версия OpenSSL была 3.0.15 или выше.

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

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

  4. Сохраните сертификат на Рутокен.
    pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.cer --id 45

  5. Если на вашем устройстве одна ключевая пара, воспользуйтесь следующей командой для подписания файла с помощью osslsigncode и pkcs11 engine:
    osslsigncode sign -pkcs11engine /path/to/pkcs11.so -pkcs11module /usr/lib/librtpkcs11ecp.so -pkcs11cert pkcs11:model=Rutoken%20ECP -key pkcs11:model=Rutoken%20ECP -in /path/to/file -out /path/to/signed_file
    
    Если у вас несколько ключевых пар на устройстве, воспользуйтесь инструкцией Использование ключей на Рутокене.

    Пример вывода команды:
    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.


  1. Для работы с Рутокен ЭЦП, скачайте нашу библиотеку PKCS#11 и установить её:
    sudo dpkg -i librtpkcs11ecp_X.X.X.X_amd64.deb

  2. Установите osslsigncode:
    sudo apt install osslsigncode 

  3. Скачайте и установите rtengine:
    unzip rtengine-X.X.X.zip
    sudo apt install /home/user/Downloads/rtengine/X.X.X/Linux/x64/packages/librtengine3_3.3.1-1_amd64.deb

    Процесс установки может отличаться в зависимости от вашей операционной системы.

  4. Для версии osslsigncode 2.9 или ниже, необходимо переименовать librtengine.so в rtengine.so.
    sudo mv /usr/lib/x86_64-linux-gnu/engines-3/librtengine.so /usr/lib/x86_64-linux-gnu/engines-3/rtengine.so

  5. Для настройки OpenSSL для работы с rtenine, воспользуйтесь инструкцией Установка и настройка OpenSSL для работы с rtengine.
    Обратите внимание, что в конфигурационном файле openssl.cnf необходимо указать актуальный путь до rtengine.so, вместо librtengine.so.

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

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


  7. Для подписания файла с помощью osslsigncode и pkcs11 engine, выполните команду:

    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
    Для использования ключей с токена необходимо специальным образом указывать идентификатор ключа. Для этого, воспользуйтесь инструкцией Использование ключей на Рутокене.

    Пример вывода команды:
    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