Крипто-ПРО для NetBSD
Состоит из 3 подзадач:
1. Чтобы операционка увидела токен — установка драйвера и настройка
2. Установка программы Крипто-Про на NetBSD
3. Связка Крипто-Про с другими программами. Например, с firefox.
1. Установка драйвера токена на NetBSD
Под рукой был рутокен. Поэтому нижеследующее касается для рутокена и NetBSD8/AMD64
Для работы с картридерами и токенами нам понадобятся следующие программы:
pcsc-lite http://pkgsrc.se/security/pcsc-lite
opensc http://pkgsrc.se/security/opensc
На момент написания в исходниках (2018Q4) была версия 0.19
Но у меня она не скомпилировалась. В бинарниках (2108Q4) тоже небыло скомпилированной версии 0.19
Поэтому я установил бинарный opensc ver 0.16 из 2018Q3.
openct http://pkgsrc.se/security/openct
А так же их зависимости..
При попытке проверить доступность токена по команде:
#pcscd -dfa
получал облом: ключ не видился.
По мотивам статьи https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=8203
скачал и скомпилировал отсюда https://github.com/AktivCo/rutokens-driver rutokens-driver драйвер рутокена.
Снова облом со следующей ошибкой:
dyn_unix.c:58:DYN_LoadLibrary() /usr/pkg/lib/pcsc-lite/drivers/ifd-rutokens.bundle/Contents/NetBSD/librutokens.so: Cannot open "/usr/pkg/lib/pcsc-lite/drivers/ifd-rutokens.bundle/Contents/NetBSD/librutokens.so"
После вдумчивого прочтения (и заглядывания по пути /usr/pkg/lib/pcsc-lite/drivers/ifd-rutokens.bundle/Contents ) понял причину - по этому пути нет нужной папки и библиотеки librutokens.so
Причина в том, что https://github.com/AktivCo/rutokens-driver заточен под Linux.
И, хотя, при компиляции создается бинарник под NetBSD, папка создается для Linux: /usr/pkg/lib/pcsc-lite/drivers/ifd-rutokens.bundle/Contents/Linux/librutokens.so
Поэтому, ПОСЛЕ КОМПИЛЯЦИИ, создаем папку NetBSD в /usr/pkg/lib/pcsc-lite/drivers/ifd-rutokens.bundle/Contents
и копируем туда /usr/pkg/lib/pcsc-lite/drivers/ifd-rutokens.bundle/Contents/Linux/librutokens.so
Файл librutokens.so должен существовать по адресу: /usr/pkg/lib/pcsc-lite/drivers/ifd-rutokens.bundle/Contents/NetBSD/librutokens.so
О чем и говорит ошибка.
Запускаю команду
#pcscd -dfa
..о чудо — система видит токен!!! Радости — полные штаны))
Первая задача решена.
2. Установка Крипто-Про на NetBSD
Теперь жесткое садо-мазо - установка Крипто-Про на NetBSD.
Весь хардкор заключается в том, что КриптоПро есть (из тех, что можно испльзовать под NetBSD) только для Linux и FreeBSD.
И, так как нет нативной версии Крипто-Про под NetBSD, то придется запускать или Linux-версию, или FreeBSD-версию.
Возможно, я не прав, но FreeBSD-версия Крипто-Про - это портированная версия из Debian.
Поэтому, чтобы не плодить прослойки и не увеличивать ошибки - попробуем запустить Linux-версию Крипто-Про.
В NetBSD, наверное, лучшая поддержка Linux-бинарников.
Например, Opera12 в NetBSD - это OpenSuSe/Linux-бинарник, который работает в NetBSD в режиме эмуляции.
upd.
Linux-версию Крипто-Про удалось запустить в режиме эмуляции Linux. Заработало с полпинка.
Крипто-Про даже видит ключи рутокена.
Статью обновлю чуть позже.
3. Совместная работа всего этого зоопарка
С Крипто-Про всё было более-менее понятно изначально. Он ожидаемо запустился. Даже легче чем ожидал.
Большие опасения вызывали плагины. С наскоку не получилось подружить плагин госуслуг)
Надо будет покопаться глубже в этом винегрете: нативный Firefox под NetBSD-> линyксовый плагин браузера через эмулятор -> нативный драйвер рутокена -> лиуксовый КриптоПро через эмулятор.
Продолжение следует.