RutokenStore и JCP в *nix
Опубликовано Санчир Момолдаев on 2020-12-22 04:36

Начиная с версии КриптоПро JCP 2.0.39738 (2018-04-11), в состав дистрибутива JCP интегрирован собственный модуль поддержки рутокена Rutoken.jar, использующий пакет java smartcardio. Модуль добавлен для замены другого устаревшего модуля поддержки, предлагаемого на сайте производителя – компании «Актив». Модуль Rutoken.jar устанавливается автоматически при установке JCP и не имеет отдельной вкладки для настройки в панели управления JCP, как модуль поддержки «Актив».

N.B. начиная с КриптоПро JCP 2.0.42644 (2022-05-20) модуль рутокен поставляется в составе дистрибутива, но не устанавливается автоматически. Инсталлировать его потребуется отдельно при необходимости.
 
Хранилище с именем RutokenStore доступно программно и на вкладке «Хранилища ключей и сертификатов» панели управления JCP только в случае, если рутокен виден  java-процессу с помощью smartcardio. Если рутокенов несколько, то имена хранилищ будут отображаться в виде RutokenStore_<серийный_номер_рутокена>. Отдельная установка модуля Rutoken.jar не требуется: он устанавливается вместе с остальными библиотеками JCP, входящими в состав дистрибутива.
 
Если рутокен подключен, но не отображается в панели управления JCP на вкладке «Хранилища ключей и сертификатов», скорее всего, java (пакет smartcardio) не обнаруживает библиотеки libpcsclite.so, необходимой для работы с рутокеном. Java самостоятельно определяет положение указанной библиотеки (см. «17.3. Настройка и использование модуля поддержки» руководства администратора безопасности), но бывает так, что ее нет.
 
Добавление libpcsclite для поддержки рутокена.
 
Установка pcsc и создание симлинка на libpcsclite.so:
1. установить pcscd

sudo apt install -y pcsc

2. найти, куда установилась библиотека libpcsclite:

find /usr -name libpcsc*

в выводе будут строки вида:

/usr/lib/x86_64-linux-gnu/libpcsclite.so.1
/usr/lib/x86_64-linux-gnu/libpcsclite.so.1.0.0

3. создать симлинк:

sudo ln -s /usr/lib/x86_64-linux-gnu/libpcsclite.so.1 /usr/lib64/libpcsclite.so

p.s. в некоторых дистрибутивах директории /usr/lib64 нет. в данном случае ее необходимо предварительно создать

sudo mkdir /usr/lib64

4. запустить панель управления JCP. Теперь при подключенном рутокене на вкладке «Хранилища ключей и сертификатов» должно отображаться хранилище RutokenStore.


В macOS необходимо использовать параметр sun.security.smartcardio.library со значением /System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC  

Например, панель JCP 2.0 необходимо запускать следующим образом:

<jre>/bin/java -Dsun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC ru.CryptoPro.JCP.ControlPane.MainControlPane

 

(6 плюсик(ов))
Класс!
Не очень :(