Для взаимодействия лицензии с сервером потребуется пакет opensc и библиотека для ruToken которую можно скачать с нашего репозитория librtpkcs11ecp_2.3.0.0-1_amd64.deb

Установки библиотеки выполняется командой:

sudo dpkg -i librtpkcs11ecp_2.3.0.0-1_amd64.deb

В статье будет рассмотрено 2 основные проблемы которые могут возникнуть с ruTocken при работе сервера ACS:

  1. Не определяется ruToken в pkcs11-tool
  2. Лицензия определялась, но теряется в процессе работы

Пере опрос процессом acsd файла лицензии и ruToken происходит раз в 10 минут.

Не определяется ruToken в pkcs11-tool

После получения ruToken он может не определяться программным обеспечением pkcs11 

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -L
Available slots:
Slot 0 (0x0): 
  (empty)
Slot 1 (0x1): 
  (empty)
Slot 2 (0x2): 
  (empty)
Slot 3 (0x3): 
  (empty)
Slot 4 (0x4): 
  (empty)
Slot 5 (0x5): 
  (empty)
Slot 6 (0x6): 
  (empty)
Slot 7 (0x7): 
  (empty)
Slot 8 (0x8): 
  (empty)
Slot 9 (0x9): 
  (empty)
Slot 10 (0xa): 
  (empty)
Slot 11 (0xb): 
  (empty)
Slot 12 (0xc): 
  (empty)
Slot 13 (0xd): 
  (empty)
Slot 14 (0xe): 
  (empty)

Но, при этом система его определяет и он отображается при выводе команды lsusb

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 005: ID 0a89:0030 Aktiv Rutoken ECP
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

В таком случае необходимо:

  1. Попробовать пере подключить token в другой usb порт и проверить определился ли token в pkcs11.
  2. На сервере не запустился pcscd или он не установлен
    проверить наличие или корректный запуск можно командой 
    sudo service pcscd status
    при отсутствии пакета будет вывод:
    sudo service pcscd status
    Для установки пакета нужно будет применить команду:
    sudo apt install pcscd -y
    при не запущенном процессе:
    pcscd.service - PC/SC Smart Card Daemon
         Loaded: loaded (/lib/systemd/system/pcscd.service; indirect; vendor preset: enabled)
         Active: inactive (dead)
    TriggeredBy: ● pcscd.socket
           Docs: man:pcscd(8)
    Для запуска процесса:
    sudo service pcscd start
  3. Так же стоит проверить командой pcsc_scan
    вывод token без проблемы:
    pcsc_scan 
    Using reader plug'n play mechanism
    Scanning present readers...
    0: Aktiv Rutoken ECP 00 00
     
    Mon Jun  1 17:45:12 2026
     Reader 0: Aktiv Rutoken ECP 00 00
      Event number: 0
      Card state: Card inserted, 
      ATR: 3B 8B 01 52 75 74 6F 6B 65 6E 20 44 53 20 C1
    
    ATR: 3B 8B 01 52 75 74 6F 6B 65 6E 20 44 53 20 C1
    + TS = 3B --> Direct Convention
    + T0 = 8B, Y(1): 1000, K: 11 (historical bytes)
      TD(1) = 01 --> Y(i+1) = 0000, Protocol T = 1 
    -----
    + Historical bytes: 52 75 74 6F 6B 65 6E 20 44 53 20
      Category indicator byte: 52 (proprietary format)
    + TCK = C1 (correct checksum)
    
    Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
    3B 8B 01 52 75 74 6F 6B 65 6E 20 44 53 20 C1
    	Aktiv Rutoken ECP
    	https://www.rutoken.ru/products/all/rutoken-ecp/
     - 
    вывод token с проблемой:
    pcsc_scan 
    Using reader plug'n play mechanism
    Scanning present readers...
    Waiting for the first reader... -
  4. Обратится в коммерческий отдел для устранения проблемы с аппаратным носителем ruToken

Лицензия определялась, но теряется в процессе работы

В первую очередь необходимо убедиться что аппаратных ресурсов сервера достаточно для корректной работы имеющегося числа CPE:

Для 10 000 терминалов:
RAM: 8 Gb 
CPU: 4 ядра
HDD: 70 Gb (минимум)

Для 20 000 терминалов:
RAM: 16 Gb 
CPU: 8 ядер
HDD: 110 Gb (минимум)

Если при работе сервера, после увеличения количества терминалов возникает ситуация, когда лицензия теряется, но самопроизвольно восстанавливается или помогает пере подключение лицензии. И лог файл содержит такие сообщения

Лог файл можно прочитать только с root правами

cat /var/log/eltex-acs/acsd.log
May 28 04:30:38.128 (7F9CC5618D80): check-license: license.bank is found
May 28 04:30:38.432 (7F9CC5618D80): license: find token, slot 0/0: 'ruToken'
May 28 04:30:38.432 (7F9CC5618D80): check-license: check token - found token with label 'ruToken'
May 28 04:30:39.627 (7F9CC5618D80): license: check token result = 0
May 28 04:30:39.668 (7F9CC5618D80): license: check token result - WEXITED = true
May 28 04:30:39.668 (7F9CC5618D80): license: check token result - pid = 2496814, code = 0, res = 0
May 28 04:30:39.668 (7F9CC5618D80): check-license: license.bank checked by ruToken successfully
May 28 04:30:39.763 (7F9CC5618D80): check-license: bank 'All.17000' is loaded, filter = 'TRUE', limit = 17000
May 28 04:40:38.011 (7F9CC5618D80): license: set to demo mode!
May 28 04:40:38.176 (7F9CC5618D80): check-license: bank 'demo' is loaded, filter = 'TRUE', limit = 100

При этом pkcs11 определяет ruToken

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -L
Available slots:
Slot 0 (0x0): Aktiv Rutoken ECP 00 00
  token label        : eToken
  token manufacturer : Aktiv Co.
  token model        : Rutoken ECP
  token flags        : login required, rng, token initialized, PIN initialized
  hardware version   : 67.4
  firmware version   : 32.2
  serial num         : 46344230
  pin min/max        : 6/32
Slot 1 (0x1): 
  (empty)
Slot 2 (0x2): 
  (empty)
Slot 3 (0x3): 
  (empty)
Slot 4 (0x4): 
  (empty)
Slot 5 (0x5): 
  (empty)
Slot 6 (0x6): 
  (empty)
Slot 7 (0x7): 
  (empty)
Slot 8 (0x8): 
  (empty)
Slot 9 (0x9): 
  (empty)
Slot 10 (0xa): 
  (empty)
Slot 11 (0xb): 
  (empty)
Slot 12 (0xc): 
  (empty)
Slot 13 (0xd): 
  (empty)
Slot 14 (0xe): 
  (empty)

Проверьте нет ли высокой загруженности CPU в процессе работы сервера. Для этого создайте файл который будет записывать статус загруженности сервера в файл. Как пример содержания скрипта:

#! /bin/bash
date '+%Y-%m-%d_%H:%M' >> /home/[user]/log_average.txt
cat /proc/loadavg >> /home/[user]/log_average.txt
free -h >> /home/[user]/log_average.txt
[user] - заменить на имя пользователя в системе

после добавить права на исполнение этому файлу и добавить правило на применение скрипта в crontab. В примере срабатывание раз в 5 минут:

chmod +x [имя файла]
crontab -e
В конце файла добавить строку
*/5 * * * sh /home/[username]/[script]

вывод в файл скриптом из примера будет таким:

2026-05-28_10:58
3.00 2.84 2.56 4/756 2498412                                                        значение нагрузки CPU нужны первые 2 значения (1 мин 5 мин 15 мин)
              total        used        free      shared  buff/cache   available	    значения загрузки ОЗУ
Mem:           15Gi       2.8Gi        10Gi       0.0Ki       2.7Gi        12Gi
Swap:         4.0Gi       311Mi       3.7Gi

Загрузка CPU:

  1. за минуту превышает 4 то CPU загружен на 100% в момент обращения к файлу
  2. за 5 минут превышает 4 то CPU сервера долгое время находится в загрузке 100% и большинство процессов стоит в ожидании обработки

Если загрузка за 5 мин начинает принимать значения выше 4 значит при этом pkcs11 может не успевает обработать запрос лицензии из-за чего лицензия теряется. 

В основном проблема связанна с нагрузкой от mysql/mariadb. проверить это можно при помощи команды top.

Так как в многоядерных, много поточных системах top может выводится значения нагрузки на cpu у процесса выше 100%(связанно это с тем что одно ядро будет загружено полностью и занята часть нагрузкой на другом ядре)

для разделения при выводе top нажмите кнопки shift+I

Это позволит выводить усредненную нагрузку относительно всех ядер

Как решение это увеличение вычислительной мощности сервера, либо разнесение нагрузки на 2 сервера при помощи http балансировщика.

  • Нет меток