Вопрос закрыт.
В итоге, порядок установки следующий.
- установить из портов devel/pcsc-lite
- установить драйвер Rutoken S из
https://github.com/AktivCo/rutokens-driver при установке должны быть autoconf, automake
# ./reconf
# ./configure LIBUSB_LIBS=/usr/lib/libusb.so
убедиться, что у src/convert_version.pl есть право на исполнение;
в src/rutokens_usb.c есть ошибка по переопределению функции get_usb_interface,
нужно вытащить функцию из описания в форвардное определение.)
# make
# make install
- стартовать pcscd, добавить переменную в rc.conf
- с сайта рутокена взять библиотеку связи с CryptoPRO rtSup_CryptoPro_nix_mac.zip,
положить соответствующую архитектуре librdrrtsupcp.so куда-нибудь в lib/ , пересоздать
hints (ldconfig -m)
- установить пакеты инсталляции Cryptopro:
CPRObase-3.6.1_0 CryptoPro CSP base.
CPROcplx-3.6.1_0 CryptoAPI lite(64bit).
CPROkc1x-3.6.1_0 CryptoPro CSP libraries and binaries(64bit).
CPROrdpx-3.6.1_0 PC/SC components of CryptoPro CSP readers(64bit).
CPROrdrx-3.6.1_0 CryptoPro CSP readers and support library(64bit).
формат пакетов "старый", устанавливать нужно при помощи pkg_add, современный pkg с этими пакетами не работает
- стартовать сервис cprocsp (он нахально инсталлируется в /etc/rc.d)
После этого должен увидеться usb-ключ:
/opt/cprocsp/bin/amd64 # ./csptest -card -enum
Aktiv Co. Rutoken S 00 00
Total:
[ErrorCode: 0x00000000]
- добавить rutoken его в конфигурацию:
/opt/cprocsp/sbin/amd64 # ./cpconfig -hardware reader -add "Aktiv Co. Rutoken S 00 00" -name Rutoken
- cpconfig -ом или вручную добавить в /etc/opt/cprocsp/config64.ini секции:
для подключения к процессу библиотеки связи
[KeyCarriers\Rutoken]
DLL = "librdrrtsupcp.so"
и, на всякий случай, в секцию
[apppath]
"librdrrtsupcp.so" = "/usr/local/lib/librdrrtsupcp.so"
подсказка, где искать сертификаты внутри токена. Здесь 'atr' - из вывода команды
./csptest -card -enum -v
[KeyCarriers\Rutoken\Default]
Name = "Rutoken"
atr = hex: 3b,6f,00,ff,00,56,72,75,54,6f,6b,6e,73,30,20,00,00,90,00
mask = hex: ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
folders = "0A00\\0B00\\0C00\\0D00\\0E00\\0F00\\1000"
Установить кодировку для служебных сообщений:
ConfigEncoding="koi8-r"
- если повезло, увидеть содержимое криптоконтейнера:
/opt/cprocsp/bin/amd64 # ./csptest -keyset -enum_cont -fqcn -verifyc
CSP (Type:75) v3.6.5365 KC1 Release Ver:3.6.7777 OS:FreeBSD CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 34389201299
\\.\Aktiv Co. Rutoken S 00 00\le-a83fv836-02c7-9b8d-45a1-3076abcd4567
\\.\Aktiv Co. Rutoken S 00 00\RaUser-a63829db-345c-25b8-c3a5-043847fa63c8
OK.
Total:
[ErrorCode: 0x00000000]
На 32-х разрядную FreeBSD-9.3 /i386 был успешно установлен инсталляционный пакет с сайта CryptoPRO, который подписан как "КриптоПро CSP 3.6 R4 для FreeBSD 7, 8 (x86)"
просмотреть сертификат, находящийся в rutoken-е:
./certmgr -list -cont '\\.\Aktiv Co. Rutoken S 00 00\RaUser-a63829db-345c-25b8-c3a5-043847fa63c8' | iconv -f utf-8 -t koi8-r
установить сертификат в хранилище
./certmgr -inst -cont '\\.\Aktiv Co. Rutoken S 00 00\RaUser-a63829db-345c-25b8-c3a5-043847fa63c8'
создать "отсоединённую" подпись в формате pks#7 для файла /tmp/t.txt с включённым в подпись сертификатом; результат выводится в файл
/tmp/1.txt.sgn. Условие выбора сертификата '-dn' можно опустить, если в хранилище всего один сертификат.
./cryptcp -signf -dn "INN=001231231231" /tmp/1.txt -dir /tmp -pin 12345678 -nochain -der -cert