CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

После долгих махинаций с CSP, P12FromGostCSP и openssl мне удалось получить файлы с ключём и сертификатом, который понимает openssl -engine gost в моей системе.

Linux Host 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
OpenSSL 1.0.1f 6 Jan 2014
ii  opensc                        0.13.0-3ubuntu4     amd64               Smart card utilities with support for PKCS#15 compatible cards

librtpkcs11ecp.so скачан с вашего сайта 4-го февраля. Токен отформатирован как указано на opensc wiki. После форматирования я ещё поменял метку через Панель управления. При форматировании через оную ни pkcs11-tool, ни pkcs15-tool ничего путного в токене не видят.

Собственно застрял я на записи ключа и сертификата в токен.

*************** OpenSC PKCS#11 spy *****************
Loaded: "/usr/lib/librtpkcs11ecp.so"

0: C_GetFunctionList
2016-02-09 23:35:29.829
Returned:  0 CKR_OK

1: C_Initialize
2016-02-09 23:35:29.829
[in] pInitArgs = (nil)
Returned:  0 CKR_OK

2: C_GetSlotList
2016-02-09 23:35:29.847
[in] tokenPresent = 0x0
[out] pSlotList: 
Count is 15
[out] *pulCount = 0xf
Returned:  0 CKR_OK

3: C_GetSlotList
2016-02-09 23:35:29.847
[in] tokenPresent = 0x0
[out] pSlotList: 
Slot 0
Slot 1
Slot 2
Slot 3
Slot 4
Slot 5
Slot 6
Slot 7
Slot 8
Slot 9
Slot 10
Slot 11
Slot 12
Slot 13
Slot 14
[out] *pulCount = 0xf
Returned:  0 CKR_OK

4: C_GetSlotInfo
2016-02-09 23:35:29.847
[in] slotID = 0x0
[out] pInfo: 
      slotDescription:        'Aktiv Rutoken ECP 00 00         '
                              '                                '
      manufacturerID:         '                                '
      hardwareVersion:         0.0
      firmwareVersion:         0.0
      flags:                   7
        CKF_TOKEN_PRESENT                
        CKF_REMOVABLE_DEVICE             
        CKF_HW_SLOT                      
Returned:  0 CKR_OK

5: C_OpenSession
2016-02-09 23:35:29.864
[in] slotID = 0x0
[in] flags = 0x6
pApplication=(nil)
Notify=(nil)
[out] *phSession = 0x1
Returned:  0 CKR_OK

6: C_GetTokenInfo
2016-02-09 23:35:29.875
[in] slotID = 0x0
[out] pInfo: 
      label:                  'Skvortsov A.A.                  '
      manufacturerID:         'Aktiv Co.                       '
      model:                  'Rutoken ECP     '
      serialNumber:           '342c55a3        '
      ulMaxSessionCount:       0
      ulSessionCount:          1
      ulMaxRwSessionCount:     0
      ulRwSessionCount:        1
      ulMaxPinLen:             32
      ulMinPinLen:             4
      ulTotalPublicMemory:     65536
      ulFreePublicMemory:      57920
      ulTotalPrivateMemory:    65536
      ulFreePrivateMemory:     57920
      hardwareVersion:         20.5
      firmwareVersion:         23.2
      time:                   '                '
      flags:                   40d
        CKF_RNG                          
        CKF_LOGIN_REQUIRED               
        CKF_USER_PIN_INITIALIZED         
        CKF_TOKEN_INITIALIZED            
Returned:  0 CKR_OK

7: C_Login
2016-02-09 23:35:35.399
[in] hSession = 0x1
[in] userType = CKU_USER
[in] pPin[ulPinLen] 00000000008de210 / 8
    00000000  DE AD BE EF DE AD BE EF                          PIN HERE        
Returned:  0 CKR_OK

8: C_CreateObject
2016-02-09 23:35:35.414
[in] hSession = 0x1
[in] pTemplate[9]: 
    CKA_CLASS             CKO_PRIVATE_KEY      
    CKA_TOKEN             True
    CKA_PRIVATE           True
    CKA_SENSITIVE         True
    CKA_LABEL             00007fffa77b6253 / 5
    4345534E 50
     C E S N  P
    CKA_ID                000000000061a0c0 / 1
    00000000  10                                               .               
    CKA_KEY_TYPE          CKK_GOSTR3410      
    CKA_GOSTR3410_PARAMS  00000000008de1d0 / 9
    00000000  06 07 2A 85 03 02 02 24 00                       ..*....$.       
    CKA_VALUE             00000000008e6410 / 32
    00000000  DE AD BE EF DE AD BE EF DE AD BE EF DE AD BE EF  ................
    00000010  DE AD BE EF DE AD BE EF DE AD BE EF DE AD BE EF  ................
Returned:  48 CKR_DEVICE_ERROR

9: C_Finalize
2016-02-09 23:35:36.009
Returned:  0 CKR_OK

При записи сертификата я получаю сообщение error: subject name too long, при том что я всего-навсего Александрович.

Обновление до opensc 0.15 из wily ничего (заметно) не изменило.

Что делать?

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Ещё попробовал собрать с помощью openssl p12 из ключа и сертификата. При попытке импортировать это добро Панель управления меня огорошила: "Импорт возможен только для rsa".

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Чем пишете ключи и сертификаты на токен?

(2016-02-15 14:05:03 отредактировано ettavolt)

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

opensc 0.13.0-3ubuntu4 с вашим модулем librtpkcs11ecp.so.

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y privkey -w fl.key --id 10 --label CESNP

Посмотрел на github.com/OpenSC/OpenSC/ - вы там многое сейчас доправляете под ЭЦП 2.0, наверно мне стоит собрать master?

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Собрал. Абсолютно те же самые ошибки.

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Что я ещё можно попробовать для записи ключа и сертификата?

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Одно время я подумал, что ключи для 34.10 хранятся не в структуре PKCS#15, но потом вспомнил, что ключи, сгенерированные с помощью веб-плагина, отображаются pkcs15-tool.

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

хорошо, мы посмотрим, что там не так.
будет неплохо если вы напишете багрепорт сюда: https://github.com/OpenSC/OpenSC/issues

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Добрый день.

В Рутокен ЭЦП 2.0 запрещен импорт ГОСТ ключевых пар.
Их можно использовать только в том случае если они сгенерированы внутри токена.

Если вам импорт ГОСТ все таки очень нужен, то вы можете попробовать модель Рутокен ЭЦП PKI.

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Кирилл Мещеряков пишет:

В Рутокен ЭЦП 2.0 запрещен импорт ГОСТ ключевых пар.
Их можно использовать только в том случае если они сгенерированы внутри токена.

В принципе правильно, так надёжнее.
Благодарю за разъяснение. В следующий раз отправлю в УЦ собственноручно сформированный CSR. ☺

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

согласен, так надежнее :)

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Кирилл Мещеряков пишет:

Добрый день.

В Рутокен ЭЦП 2.0 запрещен импорт ГОСТ ключевых пар.
Их можно использовать только в том случае если они сгенерированы внутри токена.

Если вам импорт ГОСТ все таки очень нужен, то вы можете попробовать модель Рутокен ЭЦП PKI.

"это прекрасно...." :(
Вот здесь http://dev.rutoken.ru/pages/viewpage.ac … Id=2228237
об этой особенности ни слова.
А в обычном Рутокен ЭЦП тоже запрет на импорт гост ключей?

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

shatle, это не наша прихоть, а требование регулятора.
Импорт ключей разрешен на Рутокен ЭЦП PKI, которые не сертифицируются в ФСБ.

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Я все прекрасно понимаю, но неплохо было бы обозначить данную особенность в таблице http://dev.rutoken.ru/pages/viewpage.ac … Id=2228237
Получается, я купил не тот токен....

Re: CryptoPro CSP → PKCS#11 ключ и сертификат Рутокен ЭЦП 2.0

Хорошо, мы добавим эту информацию, спасибо за обратную связь.
Хотите поменять токен?