You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

OpenVPN клиент зависает / не запрашивает PIN-код от Рутокена

При попытке подключения к OpenVPN серверу черех linux клиент с ключами на Рутокен ЭЦП процесс подключения зависает и не пытается спросить PIN-код от Рутокена.

Причина

Проблема в библиотеке libpkcs11-helper которая будучи вызвана в дочернем процессе (fork) дважды вызывает функцию C_Initialize и плохо обрабатывает ошибку CKR_CRYPTOKI_ALREADY_INITIALIZED

Проявление (имитация поведения):

$ pkcs11-tool --test-fork --module ./librtpkcs11ecp.so

Решение

Пересборка библиотеки libpkcs11-helper с флагами --disable-threading и --disable-slotevent

Пошаговое решение на примере Ubuntu Linux (32bit)

Загрузите необходимое окружение для сборки

$ sudo apt-get install git autoconf automake libtool libssl-dev

загрузите исходные коды pkcs11-helper

$ git clone https://github.com/OpenSC/pkcs11-helper.git

соберите библиотеку из исходных кодов

$ cd pkcs11-helper
$ autoreconf -i
$ ./configure --disable-threading --disable-slotevent 
$ make
$ sudo make install

Теперь когда библиотека собрана можно нужно подложить ее вместо системной

Проверим что она находится в папке /usr/local/lib

$ find /usr/local/lib -name "libpkcs*"
$ ls -la /usr/local/lib -grep libpkcs11

Для начала сохраним системную библиотеку под другим именем

$ sudo mv /usr/lib/i386-linux-gnu/libpkcs11-helper.so.1.0.0 /usr/lib/i386-linux-gnu/libpkcs11-helper.so.1.0.0-original

теперь можно скопировать новую библиотеку вместо старой

$ sudo cp /usr/local/lib/libpkcs11-helper.so /usr/lib/i386-linux-gnu/libpkcs11-helper.so.1.0.0

Перезапустите openvpn клиент и теперь процесс подключения к серверу запросит PIN-код и, если все остальные настройки в порядке, подключится к серверу

  • No labels