Re: Поддержка Рутокен ЭЦП в OpenSSL

Собрал под Linux x64

http://ubuntuone.com/2vPRtZZA1jSHRilHa292xd

Re: Поддержка Рутокен ЭЦП в OpenSSL

OS Win 7 x64
open ssl 1.0.0g x86

после замены файлами из архива

выполняю SET OPENSSL_CONF="C:\OpenSSL\bin\openssl.cfg"

и при попытки запустить openssl выдаёт 


12088:error:0200107B:system library:fopen:Unknown error:.\crypto\bio\bss_file.c:
169:fopen('"C:\OpenSSL\bin\openssl.cfg"','rb')
12088:error:2006D002:BIO routines:BIO_new_file:system lib:.\crypto\bio\bss_file.
c:174:
12088:error:0E078002:configuration file routines:DEF_LOAD:system lib:.\crypto\co
nf\conf_def.c:199:

Re: Поддержка Рутокен ЭЦП в OpenSSL

> SET OPENSSL_CONF="C:\OpenSSL\bin\openssl.cfg"

Попробуйте убрать кавычки

Re: Поддержка Рутокен ЭЦП в OpenSSL

Виктор, спасибо за проделанную работу!

Есть такой важный вопрос.  Можно ли ЭЦП, полученную обсуждаемой здесь связкой (OpenSSL+Rutoken ЭЦП), считать квалифицированной в соответствии с Законом об ЭЦП. Т.е. можно ли считать, что "для создания и проверки электронной подписи используются средства электронной подписи, получившие подтверждение соответствия требованиям" (т.е. сертифицированные ФСБ). Если нет, можно ли в принципе использовать Rutoken ЭЦП для этих целей каким либо образом без дополнительного приобретения сертифицированного ФСБ софта, чтобы вписаться в понятие квалифицированной подписи (ведь сам Rutoken ЭЦП сертифицирован ФСБ, а все вычисление происходят у него на борту).

(2012-04-25 17:14:25 отредактировано derb)

Re: Поддержка Рутокен ЭЦП в OpenSSL

Здравствуйте,

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

Если бы был известен закрытый ключ, можно было бы сделать:
openssl dgst -md_gost94 -sign private.pem data.txt

Если правильно понял, закрытый ключ из Рутокен никаким образом не вытащить, и такой вариант не пройдёт.

Не подскажете, как правильно сформировать команду на подписание, как указать, что надо использовать закрытый ключ из Рутокен:
openssl dgst -engine pkcs11_gost -md_gost94 -sign ??? data.txt

Re: Поддержка Рутокен ЭЦП в OpenSSL

derb пишет:

Здравствуйте,

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

Если бы был известен закрытый ключ, можно было бы сделать:
openssl dgst -md_gost94 -sign private.pem data.txt

Если правильно понял, закрытый ключ из Рутокен никаким образом не вытащить, и такой вариант не пройдёт.

Не подскажете, как правильно сформировать команду на подписание, как указать, что надо использовать закрытый ключ из Рутокен:
openssl dgst -engine pkcs11_gost -md_gost94 -sign ??? data.txt


Нужен Рутокен ЭЦП

Попробуйте сначала сгенерить ключ на токене:

openssl genpkey -engine pkcs11_gost -algorithm GOST2001 -pkeyopt slot_key_id:100 -pkeyopt paramset:A -pkeyopt pin:12345678

Потом подписать с помощью этого ключа:

openssl dgst -engine pkcs11_gost -md_gost94 -sign 100 -keyform engine data.txt

Re: Поддержка Рутокен ЭЦП в OpenSSL

Спасибо.

А есть возможность узнать slot_key_id уже имеющегося в Рутокен ключа либо список всех slot_key_id в Рутокен?

Re: Поддержка Рутокен ЭЦП в OpenSSL

С помощью утилиты openssl нельзя.

Можно с помощью утилиты pkcs11-tool из состава OpenSC

Сначала посмотреть список слотов:

pkcs11-tool --module "[путь к rtPKCS11ECP]" --list-slots

Потом поcмотреть список объектов на токене в интересующем вас слоте:

pkcs11-tool.exe --module "[путь к rtPKCS11ECP]" --list-objects --slot [ID нужного вам слота]

Перед вызовом pkcs11-tool иногда нужно "обнулить" переменную окружения OPENSSL_CONF (на винде set OPENSSL_CONF=)

Re: Поддержка Рутокен ЭЦП в OpenSSL

Спасибо.

А возможно ли с помощью pkcs11-tool или openssl  "вытащить" закрытый ключ из Рутокен в файл и затем подавать его в качестве параметра "-sign":

openssl dgst -engine pkcs11_gost -md_gost94 -sign path_to_key_file -keyform engine data.txt

Re: Поддержка Рутокен ЭЦП в OpenSSL

Закрытые ключи с токена не экспортируются. Для чего Вы хотите это сделать?
Саму подпись можно выполнить с помощью команд, указанных Виктором в этом сообщении: https://forum.rutoken.ru/post/4742/#p4742

Re: Поддержка Рутокен ЭЦП в OpenSSL

Необходимо подписывать данные под unix, но Рутокен постоянно держать подключённым к серверу нет возможности.

Re: Поддержка Рутокен ЭЦП в OpenSSL

Тогда, видимо, имеет смысл использовать ключи в файлах. Не понимаю смысл использования токена в вашей ситуации.

Re: Поддержка Рутокен ЭЦП в OpenSSL

Здравствуйте!
Проблема следующего характера:
Надо сделать связку OpenSSL + ruToken S
Делается все по инструкции, драйвера в системе есть.
Но:
pkcs11-tool говорит
c:\Program Files\OpenSC Project\OpenSC\tools>pkcs11-tool --module c:\Windows\Sys
tem32\rtPKCS11ECP.dll --list-slots
Available slots:
Slot 0 (0x0):
  (empty)
Slot 1 (0x1):
  (empty)
Slot 2 (0x2):
  (empty)
Slot 3 (0x3):
  (empty)
Slot 4 (0x4):
  (empty)
А openssl:
C:\OpenSSL-Win32\bin>openssl genpkey -engine pkcs11_gost -algorithm GOST2001 -pk
eyopt paramset:A -pkeyopt pin:12345678 (пин другой)
engine "pkcs11_gost" set.
didn't find any tokens
Error generating key
2164:error:81091084:lib(129):PKCS11_FIND_LOGIN_TOKEN:unable find any token:engin
e_pkcs11.c:507:

C:\OpenSSL-Win32\bin>
Как я понимая он не видит токена, но панель упраления Рутокена видет.
И система видет данное устройство.
Что может быть не так?
Может инструкция рассчитана только на Рутокен ЭЦП, а на Рутокен S другая инструкция, если да то где её взять?

Re: Поддержка Рутокен ЭЦП в OpenSSL

Библиотека rtPKCS11ECP не работает с Рутокен S.

Обратите внимание, что в выводе
pkcs11-tool --module c:\Windows\System32\rtPKCS11ECP.dll --list-slots
не найдено ни одного токена.

Кроме того, OpenSSL по ГОСТам не работает с Рутокен S, так на нем аппаратно ГОСТ Р 34-10.2001 (электронная подпись) не реализован.
Поддерживается только Рутокен ЭЦП.

(2012-06-01 18:08:26 отредактировано DrelinA)

Re: Поддержка Рутокен ЭЦП в OpenSSL

Виктор Ткаченко пишет:

Библиотека rtPKCS11ECP не работает с Рутокен S.

Обратите внимание, что в выводе
pkcs11-tool --module c:\Windows\System32\rtPKCS11ECP.dll --list-slots
не найдено ни одного токена.

Кроме того, OpenSSL по ГОСТам не работает с Рутокен S, так на нем аппаратно ГОСТ Р 34-10.2001 (электронная подпись) не реализован.
Поддерживается только Рутокен ЭЦП.

И как быть тогда?  Если нужно сделать связку Рутокен S + OpenSSL?