Rutoken ЭЦП и OpenVPN

Добрый день !
Все делал по этой статье http://developer.rutoken.ru/pages/viewp … Id=4227143
rutoken отформатирован через панель управления windows.

При выводе команды через Windows
openvpn.exe --show-pkcs11-ids C:\rtPKCS11ECP.dll  все отображается коректно
При выводе команды через Linux
openvpn --show-pkcs11-ids /usr/lib/librtpkcs11ecp.so  пусто

$openvpn --show-pkcs11-ids /usr/lib/librtpkcs11ecp.so

The following objects are available for use.
Each object shown below may be used as parameter to
--pkcs11-id option please remember to use single quote mark.

сертификат заливался через панель управления или XCA(в windows в обоих случаях отображается корректно в linux вот такая проблема)

Операционная система Debian Wheezy x86_64
Версия openvpn : 2.3.2 и 2.3.5 тоже пробовал ситуацию не изменило

Спасибо.

Re: Rutoken ЭЦП и OpenVPN

библиотека для linux последней версии?

Re: Rutoken ЭЦП и OpenVPN

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

библиотека для linux последней версии?

Да . конечно

Re: Rutoken ЭЦП и OpenVPN

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

библиотека для linux последней версии?

Да . конечно

Скачано с https://www.rutoken.ru/support/download/pkcs/

Re: Rutoken ЭЦП и OpenVPN

В качестве эксперимента попробуйте предыдущую версию отсюда: https://download.rutoken.ru/Rutoken/PKCS11Lib/1.1.4.0/
А так, мы конечно попробуем воспроизвести ситуацию и разобраться

(2015-02-20 10:24:54 отредактировано jamest)

Re: Rutoken ЭЦП и OpenVPN

подтверждаю проблему.
готовый ключ импортирован на рутокен ЭЦП с помощью фирменной утилиты.
в windows по команде
>openvpn --show-pkcs11-ids c:\my\rtpkcs11ecp.dll
сертификат виден.

загружаем машину с Live-cd ubuntu 14.04.1 desktop  x 64 (пробовалось также на 14.04, 10.04 - соответственно, разные версии openvpn). ставим пакеты pcscd, openvpn, текущий librtpkcs11ecp.deb, pcsc-tool. по зависимостям притягиваются требования с https://www.rutoken.ru/support/download … s-for-nix/.
в pcsc_scan устройство видно.

$ openvpn --show-pkcs11-ids /home/james/librtpkcs11ecp.so
The following objects are available for use.
Each object shown below may be used as parameter to ...

и пусто. при использовании предложенной Вами librtpkcs11ecp версии 1.1.4.0 предыдущая команда зависает так, что openvpn не прервать ни по ctrl+c, ни по kill (проверено на 2 версиях openvpn - 2.3.2 и 2.1.0)
дополнительно необходимо сказать, что если запустить openvpn "в работу" с конфигом, где прописан провайдер librtpkcs11ecp актульной версии, или 1.1.4.0, openvpn также мертво виснет. пробовал на 3 разных версиях openvpn, на каждой с 2 разными версиями librtpkcs11ecp.

укажите, пожалуйста, что мы делаем не так. покупаю уже второй рутокен (рядом моя тема про Lite-версию) в надежде, что подниму openvpn на линукс.

Re: Rutoken ЭЦП и OpenVPN

спасибо за описание проблемы - будем разбираться

Re: Rutoken ЭЦП и OpenVPN

jamest пишет:

>openvpn --show-pkcs11-ids c:\my\rtpkcs11ecp.dll
сертификат виден.

$ openvpn --show-pkcs11-ids /home/james/librtpkcs11ecp.so
The following objects are available for use.
Each object shown below may be used as parameter to ...

при использовании предложенной Вами librtpkcs11ecp версии 1.1.4.0 предыдущая команда зависает

Приведите пожалуйста результаты выполнения команды (на библиотеках PKCS#11, которые у Вас не работают)

$ pkcs11-tool --module /home/james/librtpkcs11ecp.so -O --login

Re: Rutoken ЭЦП и OpenVPN

jamest пишет:
$ openvpn --show-pkcs11-ids /home/james/librtpkcs11ecp.so
The following objects are available for use.
Each object shown below may be used as parameter to ...

И если не затруднит, добавьте пожалуйста детализации логов --verb 11

$ openvpn --verb 11 --show-pkcs11-ids /home/james/librtpkcs11ecp.so

Re: Rutoken ЭЦП и OpenVPN

Есть большое подозрение, что в OpenVPN --show-pkcs11-ids не всегда работает корректно и расстреливает память.
Попробуйте пропустить на linux этот шаг и пойти дальше.

Re: Rutoken ЭЦП и OpenVPN

_S пишет:

Приведите пожалуйста результаты выполнения команды (на библиотеках PKCS#11, которые у Вас не работают)

$ pkcs11-tool --module /home/james/librtpkcs11ecp.so -O --login

на librtpkcs11ecp.so актуальной версии и ubuntu 14.04.1:

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O --login
Using slot 0 with a present token (0x0)
Logging in to "my".
Please enter User PIN: 
Private Key Object; RSA 
  label:      ********-****-****-722553062220_E
  ID:         *******************************************************92d3732323535333036323232305f45
  Usage:      decrypt, sign, derive
Public Key Object; RSA 1024 bits
  label:      ********-****-****-722553062220_E
  ID:         *******************************************************92d3732323535333036323232305f45
  Usage:      encrypt, verify
Certificate Object, type = X.509 cert
  label:      ********-****-****-722553062220_E
  ID:         *******************************************************92d3732323535333036323232305f45
# openvpn --verb 11 --show-pkcs11-ids /usr/lib/librtpkcs11ecp.so
Wed Feb 25 11:01:23 2015 us=436622 PKCS#11: pkcs11h_addProvider entry version='1.11', pid=7237, reference='/usr/lib/librtpkcs11ecp.so', provider_location='/usr/lib/librtpkcs11ecp.so', allow_protected_auth=1, mask_private_mode=00000000, cert_is_private=0
Wed Feb 25 11:01:23 2015 us=436693 PKCS#11: Adding provider '/usr/lib/librtpkcs11ecp.so'-'/usr/lib/librtpkcs11ecp.so'
Wed Feb 25 11:01:23 2015 us=439422 PKCS#11: __pkcs11h_forkFixup entry pid=7239, activate_slotevent=0
Wed Feb 25 11:01:23 2015 us=439498 PKCS#11: __pkcs11h_forkFixup return
Wed Feb 25 11:01:23 2015 us=439508 PKCS#11: pkcs11h_terminate entry
Wed Feb 25 11:01:23 2015 us=439515 PKCS#11: Terminating openssl
Wed Feb 25 11:01:23 2015 us=439522 PKCS#11: _pkcs11h_openssl_terminate
Wed Feb 25 11:01:23 2015 us=439529 PKCS#11: Removing providers
Wed Feb 25 11:01:23 2015 us=439536 PKCS#11: Releasing sessions
Wed Feb 25 11:01:23 2015 us=439543 PKCS#11: Terminating slotevent
Wed Feb 25 11:01:23 2015 us=439550 PKCS#11: _pkcs11h_slotevent_terminate entry
Wed Feb 25 11:01:23 2015 us=439557 PKCS#11: _pkcs11h_slotevent_terminate return
Wed Feb 25 11:01:23 2015 us=439564 PKCS#11: Marking as uninitialized
Wed Feb 25 11:01:23 2015 us=468311 PKCS#11: pkcs11h_addProvider Provider '/usr/lib/librtpkcs11ecp.so' manufacturerID 'Aktiv Co.'
Wed Feb 25 11:01:23 2015 us=468341 PKCS#11: _pkcs11h_slotevent_notify entry
Wed Feb 25 11:01:23 2015 us=468349 PKCS#11: _pkcs11h_slotevent_notify return
Wed Feb 25 11:01:23 2015 us=468357 PKCS#11: Provider '/usr/lib/librtpkcs11ecp.so' added rv=0-'CKR_OK'
Wed Feb 25 11:01:23 2015 us=468364 PKCS#11: pkcs11h_addProvider return rv=0-'CKR_OK'
Wed Feb 25 11:01:23 2015 us=468373 PKCS#11: pkcs11h_certificate_enumCertificateIds entry method=1, mask_prompt=00000003, p_cert_id_issuers_list=(nil), p_cert_id_end_list=0x7fffe3909758
Wed Feb 25 11:01:23 2015 us=468383 PKCS#11: _pkcs11h_session_getSlotList entry provider=0x7ffea0533620, token_present=1, pSlotList=0x7fffe39095f0, pulCount=0x7fffe39095f8
Wed Feb 25 11:01:23 2015 us=468791 PKCS#11: __pkcs11h_forkFixup entry pid=7247, activate_slotevent=0
Wed Feb 25 11:01:23 2015 us=468886 PKCS#11: __pkcs11h_forkFixup return
Wed Feb 25 11:01:23 2015 us=468895 PKCS#11: pkcs11h_terminate entry
Wed Feb 25 11:01:23 2015 us=468902 PKCS#11: Terminating openssl
Wed Feb 25 11:01:23 2015 us=468909 PKCS#11: _pkcs11h_openssl_terminate
Wed Feb 25 11:01:23 2015 us=468916 PKCS#11: Removing providers
Wed Feb 25 11:01:23 2015 us=468924 PKCS#11: pkcs11h_removeProvider entry reference='/usr/lib/librtpkcs11ecp.so'
Wed Feb 25 11:01:23 2015 us=468931 PKCS#11: Removing provider '/usr/lib/librtpkcs11ecp.so'
Wed Feb 25 11:01:23 2015 us=469896 PKCS#11: _pkcs11h_slotevent_notify entry
Wed Feb 25 11:01:23 2015 us=469910 PKCS#11: _pkcs11h_slotevent_notify return
Wed Feb 25 11:01:23 2015 us=469928 PKCS#11: pkcs11h_removeProvider return rv=0-'CKR_OK'
Wed Feb 25 11:01:23 2015 us=469936 PKCS#11: Releasing sessions
Wed Feb 25 11:01:23 2015 us=469943 PKCS#11: Terminating slotevent
Wed Feb 25 11:01:23 2015 us=469950 PKCS#11: _pkcs11h_slotevent_terminate entry
Wed Feb 25 11:01:23 2015 us=469957 PKCS#11: _pkcs11h_slotevent_terminate return
Wed Feb 25 11:01:23 2015 us=469964 PKCS#11: Marking as uninitialized
Wed Feb 25 11:01:23 2015 us=484493 PKCS#11: _pkcs11h_session_getSlotList return rv=0-'CKR_OK' *pulCount=0
Wed Feb 25 11:01:23 2015 us=484576 PKCS#11: __pkcs11h_certificate_splitCertificateIdList entry cert_id_all=(nil), p_cert_id_issuers_list=(nil), p_cert_id_end_list=0x7fffe3909758
Wed Feb 25 11:01:23 2015 us=484613 PKCS#11: __pkcs11h_certificate_splitCertificateIdList return rv=0-'CKR_OK'
Wed Feb 25 11:01:23 2015 us=484648 PKCS#11: pkcs11h_certificate_enumCertificateIds return rv=0-'CKR_OK'

The following objects are available for use.
Each object shown below may be used as parameter to
--pkcs11-id option please remember to use single quote mark.
Wed Feb 25 11:01:23 2015 us=484769 PKCS#11: pkcs11h_terminate entry
Wed Feb 25 11:01:23 2015 us=484804 PKCS#11: Terminating openssl
Wed Feb 25 11:01:23 2015 us=484842 PKCS#11: _pkcs11h_openssl_terminate
Wed Feb 25 11:01:23 2015 us=484875 PKCS#11: Removing providers
Wed Feb 25 11:01:23 2015 us=484930 PKCS#11: pkcs11h_removeProvider entry reference='/usr/lib/librtpkcs11ecp.so'
Wed Feb 25 11:01:23 2015 us=484965 PKCS#11: Removing provider '/usr/lib/librtpkcs11ecp.so'
Wed Feb 25 11:01:23 2015 us=486923 PKCS#11: _pkcs11h_slotevent_notify entry
Wed Feb 25 11:01:23 2015 us=487053 PKCS#11: _pkcs11h_slotevent_notify return
Wed Feb 25 11:01:23 2015 us=487097 PKCS#11: pkcs11h_removeProvider return rv=0-'CKR_OK'
Wed Feb 25 11:01:23 2015 us=487126 PKCS#11: Releasing sessions
Wed Feb 25 11:01:23 2015 us=487155 PKCS#11: Terminating slotevent
Wed Feb 25 11:01:23 2015 us=487185 PKCS#11: _pkcs11h_slotevent_terminate entry
Wed Feb 25 11:01:23 2015 us=487218 PKCS#11: _pkcs11h_slotevent_terminate return
Wed Feb 25 11:01:23 2015 us=487250 PKCS#11: Marking as uninitialized

для библиотеки версии 1.1.4.0 вывод pkcs11-tool аналогичный. вывод openvpn --show-pkcs11-ids:

# openvpn --verb 11 --show-pkcs11-ids /home/ubuntu/Downloads/librtpkcs11ecp.so
Wed Feb 25 11:12:53 2015 us=953969 PKCS#11: pkcs11h_addProvider entry version='1.11', pid=7945, reference='/home/ubuntu/Downloads/librtpkcs11ecp.so', provider_location='/home/ubuntu/Downloads/librtpkcs11ecp.so', allow_protected_auth=1, mask_private_mode=00000000, cert_is_private=0
Wed Feb 25 11:12:53 2015 us=954049 PKCS#11: Adding provider '/home/ubuntu/Downloads/librtpkcs11ecp.so'-'/home/ubuntu/Downloads/librtpkcs11ecp.so'
Wed Feb 25 11:12:53 2015 us=956817 PKCS#11: __pkcs11h_forkFixup entry pid=7947, activate_slotevent=0
Wed Feb 25 11:12:53 2015 us=956884 PKCS#11: __pkcs11h_forkFixup return
Wed Feb 25 11:12:53 2015 us=956893 PKCS#11: pkcs11h_terminate entry
Wed Feb 25 11:12:53 2015 us=956900 PKCS#11: Terminating openssl
Wed Feb 25 11:12:53 2015 us=956909 PKCS#11: _pkcs11h_openssl_terminate
Wed Feb 25 11:12:53 2015 us=956917 PKCS#11: Removing providers
Wed Feb 25 11:12:53 2015 us=956923 PKCS#11: Releasing sessions
Wed Feb 25 11:12:53 2015 us=956930 PKCS#11: Terminating slotevent
Wed Feb 25 11:12:53 2015 us=956936 PKCS#11: _pkcs11h_slotevent_terminate entry
Wed Feb 25 11:12:53 2015 us=956943 PKCS#11: _pkcs11h_slotevent_terminate return
Wed Feb 25 11:12:53 2015 us=956950 PKCS#11: Marking as uninitialized
Wed Feb 25 11:12:53 2015 us=978995 PKCS#11: pkcs11h_addProvider Provider '/home/ubuntu/Downloads/librtpkcs11ecp.so' manufacturerID 'Aktiv Co.'
Wed Feb 25 11:12:53 2015 us=979032 PKCS#11: _pkcs11h_slotevent_notify entry
Wed Feb 25 11:12:53 2015 us=979040 PKCS#11: _pkcs11h_slotevent_notify return
Wed Feb 25 11:12:53 2015 us=979048 PKCS#11: Provider '/home/ubuntu/Downloads/librtpkcs11ecp.so' added rv=0-'CKR_OK'
Wed Feb 25 11:12:53 2015 us=979055 PKCS#11: pkcs11h_addProvider return rv=0-'CKR_OK'
Wed Feb 25 11:12:53 2015 us=979065 PKCS#11: pkcs11h_certificate_enumCertificateIds entry method=1, mask_prompt=00000003, p_cert_id_issuers_list=(nil), p_cert_id_end_list=0x7fff93284338
Wed Feb 25 11:12:53 2015 us=979074 PKCS#11: _pkcs11h_session_getSlotList entry provider=0x7f2e25ece620, token_present=1, pSlotList=0x7fff932841d0, pulCount=0x7fff932841d8
Wed Feb 25 11:12:53 2015 us=979497 PKCS#11: __pkcs11h_forkFixup entry pid=7953, activate_slotevent=0
Wed Feb 25 11:12:53 2015 us=979577 PKCS#11: __pkcs11h_forkFixup return
Wed Feb 25 11:12:53 2015 us=979587 PKCS#11: pkcs11h_terminate entry
Wed Feb 25 11:12:53 2015 us=979594 PKCS#11: Terminating openssl
Wed Feb 25 11:12:53 2015 us=979603 PKCS#11: _pkcs11h_openssl_terminate
Wed Feb 25 11:12:53 2015 us=979610 PKCS#11: Removing providers
Wed Feb 25 11:12:53 2015 us=979622 PKCS#11: pkcs11h_removeProvider entry reference='/home/ubuntu/Downloads/librtpkcs11ecp.so'
Wed Feb 25 11:12:53 2015 us=979632 PKCS#11: Removing provider '/home/ubuntu/Downloads/librtpkcs11ecp.so'

и процесс виснет, прервать невозможно

Re: Rutoken ЭЦП и OpenVPN

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

Есть большое подозрение, что в OpenVPN --show-pkcs11-ids не всегда работает корректно и расстреливает память.
Попробуйте пропустить на linux этот шаг и пойти дальше.

от пропуска этого шага лучше не становится, поскольку если в конфиг openvpn добавить

pkcs11-providers /usr/lib/librtpkcs11ecp.so
pkcs11-id 'Aktiv\x20Co\x2E/Rutoken\x20ECP/3190541d/my/********************************562392D3732323535333036323232305F45' (подсмотрено в выводе --show-pkcs11-ids под windows)

openvpn также виснет намертво, конец лога:

Wed Feb 25 11:22:38 2015 us=857784 OpenVPN 2.3.2 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [eurephia] [MH] [IPv6] built on Dec  1 2014
Wed Feb 25 11:22:38 2015 us=857813 PKCS#11: pkcs11_initialize - entered
Wed Feb 25 11:22:38 2015 us=857849 PKCS#11: pkcs11_initialize - return 0-'CKR_OK'
Wed Feb 25 11:22:38 2015 us=857856 PKCS#11: pkcs11_addProvider - entered - provider='/usr/lib/librtpkcs11ecp.so', private_mode=00000000
Wed Feb 25 11:22:38 2015 us=857862 PKCS#11: Adding PKCS#11 provider '/usr/lib/librtpkcs11ecp.so'
Wed Feb 25 11:22:38 2015 us=857874 PKCS#11: pkcs11h_addProvider entry version='1.11', pid=8074, reference='/usr/lib/librtpkcs11ecp.so', provider_location='/usr/lib/librtpkcs11ecp.so', allow_protected_auth=0, mask_private_mode=00000000, cert_is_private=0
Wed Feb 25 11:22:38 2015 us=857881 PKCS#11: Adding provider '/usr/lib/librtpkcs11ecp.so'-'/usr/lib/librtpkcs11ecp.so'

(2015-03-02 11:02:44 отредактировано Аникушин Евгений)

Re: Rutoken ЭЦП и OpenVPN

Пока что нам не удалось воспроизвести вашу ошибку.
Попробуйте проверить корректность работы на следующей, более новой, версии библиотеки, возможно в ней эта ошибка уже исправлена:
rar - https://www.dropbox.com/s/tqzzztbemnofe … 0.rar?dl=0
tar.gz - https://www.dropbox.com/s/uuxcy9l9ousf6 … ar.gz?dl=0

Re: Rutoken ЭЦП и OpenVPN

Добрый день.
на ubuntu 10.04 и openvpn 2.1.0 новая библиотека на комманду openvpn --show-pkcs11-ids вывела сертификаты. на запуск в работу openvpn завис.
на ubuntu 14.04.2 сертификаты не вывела. openvpn с прописанным в конфиг ID сертификата запустился и спросил пин. после чего завершился, в логе сообщение о неправильном пин.

Пока устал от этих тестов, для себя оставил вывод, что решение не работает. будет вдохновение еще потестить - отпишусь в эту тему.

(2015-03-25 11:17:19 отредактировано _S)

Re: Rutoken ЭЦП и OpenVPN

jamest пишет:

решение не работает

К сожалению, решение не работает в Linux x86_64 и x86, но если собрать pkcs11-helper (который используется в OpenVPN) c

pkcs11-helper $ ./configure --disable-slotevent --disable-threading

то, работать будет.

Это, конечно, временное решение. Следующая версия librtpkcs11ecp.so, я думаю, исправит эту ситуацию.