...
Info |
---|
Подключите устройств семейства Рутокен ЭЦП к компьютеру. |
Перед началом работы, установите следующие пакеты:
...
Для этого соберите библиотеку libp11 из репозитория. Вместе с ней идет libpkcs11.so начиная с версии 0.4.
Использование ключей на Рутокене
pkcs11-engine
позволяет использовать ключи, расположенные на токене.
Ключевая пара идентифицируется с помощью pkcs11 uri.
Возможные компоненты идентификатора пути:
manufacturer:
ID производителя токена
model:
модель токена
serial:
серийный номер токена
token:
метка токена(
поле "label")
object:
имя объекта(CKA_LABEL)
id:
идентификатор объекта (CKA_ID)
Пример идентификатора ключевой пары на токене:
pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP;serial=2adc8d87;object=my%20label;id=%aa%bb%cc%dd?pin-value=12345678
Если подключен только один Рутокен с единственной ключевой парой:
pkcs11:model=Rutoken%20ECP
В зависимости от операции будет выбран открытый или закрытый ключ соответственно. Оба ключа пары должны иметь одинаковый идентификатор объекта и/или имя объекта.
Создание ключей
Вы можете пропустить данный раздел, если у вас уже имеются необходимые RSA ключи.
Если ключей нет, ниже команда для их созданию:
...
id
: идентификатор объекта (CKA_ID) в виде двузначных номеров символов в hex из таблицы ASCII.
Чтобы использовать этот id через OpenSSL надо использовать символы, соответствующие этим кодам.
Например: для ‘--id 3132
’ в OpenSSL надо указывать "pkcs11:id=12
".
Для удобства, можно воспользоваться онлайн-сервисом конвертации ACSII-кодов в строку.
Проверим сгенерированный ключ:
...
|
Используя -nodetach
подписываемые данные включаются в состав CMS пакета — присоединенная подпись. Без этой опции подпись будет «отсоединенной».
...
|
...
|
...
Info | ||
---|---|---|
| ||
При расшифровании сообщения вырабатывается общий симметричный ключ, который непосредственно и используется при расшифровке. Рутокен позволяет генерировать такой общий ключ только на не извлекаемых закрытых ключах с опцией 'derive' в поле key usage. Для того чтобы указать эту опцию, при генерации ключа используйте флаг --usage-derive. Например:
|
|
...
openssl cms -decrypt -binary -in encrypted_cms -inform PEM -recip respondent.cer -keyform engine -inkey
"pkcs11:your_pkcs11_uri"
-engine rtengine -out decrypted_cms_data
...