(2023-04-08 01:09:44 отредактировано Alex_Zorg)

Запись ключей по ГОСТ в Rutoken 3.0 ЭЦП (в Linux)

При попытке записать ключ, созданный с помощью OpenSSL по ГОСТ в Рутокен получаю ошибку.

Вот примерный код на bash:

PIN="12345678"
ID="3034" # это будет pkcs11:id=04
LABEL="GOST-04"
KEYOPT="--usage-derive"
EXTRACTABLE="--extractable"

export OPENSSL_CONF=/etc/ssl/openssl_rutoken.cnf

# Создание ключевой пары ГОСТ в фомате DER
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A | \
  openssl pkey -inform PEM -outform DER -out key.der

# отделить открытый ключ
openssl pkey -inform DER -in key.der -outform DER -pubout -out pub.der

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so \
  --login --pin "$PIN" \
  --id "$ID" --label "$LABEL" $KEYOPT \
  --write-object key.der --type privkey && rm key.der

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so \
  --login --pin "$PIN" \
  --id "$ID" --label "$LABEL" $KEYOPT $EXTRACTABLE \
  --write-object pub.der  --type pubkey && rm pub.der

Похожий пример с RSA ключом работает успешно - в токен записывается пара ключей успешно...
Как говорится:
- Учитель, а где у меня ошибка в коде? - спрашивает ученик.
- Хм..... Вероятно в ДНК. - отвечают учитель информатики.

Что-то мне подсказывает, что OpenSSL и Рутокен понимают ключи по ГОСТу в разных форматах...
Но хотелось бы решить задачу...

Re: Запись ключей по ГОСТ в Rutoken 3.0 ЭЦП (в Linux)

Alex_Zorg, добрый день.
Импорт ГОСТ ключей на Рутокен ЭЦП запрещен. Генерация через openssl пока не поддерживается.
Но можно сгенерировать закрытый ключи через pkcs11-tool, входящей в OpenSC.
Подробнее о сценариях использования у нас описано в статье https://dev.rutoken.ru/pages/viewpage.a … d=43450394

(2023-04-11 09:19:13 отредактировано Alex_Zorg)

Re: Запись ключей по ГОСТ в Rutoken 3.0 ЭЦП (в Linux)

Аверченко Кирилл, Спасибо за ответ! Документацию читали, но был надежда.
Но хорошо, что хотя бы RSA ключи можно записать. Есть такая задача (на одной оторванной от всех сетей ЭВМ в закрытом подвале за несколькими железными дверями создать ключевую пару и записать ее там же на несколько равнозначных Токенов). Жаль, что с ГОСТ нельзя так. Это было бы патриотично.

Немного по другой теме, но сразу явно не нашли в документации, что для работы с OpenSSL нужно не rtengine ставить (она как раз для ГОСТ), а Open Source библиотеку libengine-pkcs11-openssl. В документации упоминание есть где-то вскользь, но надо еще постараться найти и лично мне показалось как-то не явно и не в том месте, где было бы этому самое место - в разделе "Рутокен + OpenSSL"...

Re: Запись ключей по ГОСТ в Rutoken 3.0 ЭЦП (в Linux)

Alex_Zorg, спасибо за замечание, доработаем инструкцию.
Обычно RSA ключи используют для двухфакторной аутентификации в vpn, ОС, ssh. В этих разделах описано как создавать ключи и сертификаты, например, https://dev.rutoken.ru/pages/viewpage.a … enSSL1.1.x