Назад | Перейти на главную страницу

Порядок изменения идентификатора slot_id при перезагрузке

Привет и спасибо, что нашли время прочитать это.

Проблема:

У меня есть 4 токен-устройства с одинаковой моделью и одним именем, я полагаюсь на идентификатор слота (и серийный номер), чтобы определить, какое из них использовать. После 5 месяцев работы без проблем нам пришлось перезапустить сервер (плановое обслуживание), и мы обнаружили, что идентификатор слота изменился.

TOKEN      BEFORE    NOW       USB PORT
Token 1    Slot 0    Slot 1    0
Token 2    Slot 1    Slot 0    1
Token 3    Slot 2    Slot 3    2
Token 4    Slot 3    Slot 2    3

Шаги, пытающиеся решить проблему:

Отключение каждого устройства и оставление только «токена 1» подключенным, получает слот 0, но как только я подключаю «токен 2», он меняется на слот 1 и оставляет «токен 2» как слот 0 и токен 1 как слот 1.

Я пытался перезапустить систему udev, чтобы увидеть, что это как-то связано с порядком инициализации, но это не имеет никакого значения. Глядя в Интернет, похоже, что простой перезапуск udev не всегда работает с проблемами USB (https://askubuntu.com/a/178078).

Перезапуск каждой службы, связанной с токеном, opensc или usb, не имеет никакого значения.

Чего я пытаюсь достичь:

Я использую openssl для подписи некоторых документов. Он меняется от токена к токену в зависимости от пользователя. Итак, я использую:

openssl [ARGS] -inkey slot_X-id_XXXXXXXXXXXXXXXX [MORE ARGS]

Мне пришлось обновить слоты, чтобы отразить каждого пользователя. Это просто небольшая выпуклость, с которой я без проблем справляюсь каждые 6 месяцев (когда мы проводим плановое обслуживание), но я хотел бы ссылаться на токены по серийному номеру или последовательному способу подключения / отключения устройств и получения правильного слота. порядок.

Я знаю, что есть схема URI, которая разрешена в параметре inkey (https://tools.ietf.org/html/rfc7512), но мне не удалось заставить его работать.

Также приветствуется любая информация, помогающая мне решить эту проблему.

Дополнительная информация: Не думаю, что это важно, но вот оно:

**Server:**
OS: Linux (Ubuntu Server 14.06)

**Tokens:**
Slot 0 (0x0): AKS ifdh [eToken 5110 SC] 01 00
  token label        : MyDevice
  token manufacturer : SafeNet, Inc.
  token model        : eToken
  token flags        : rng, login required, PIN initialized, token initialized, other flags=0x200
  hardware version   : 12.0
  firmware version   : 12.0
  serial num         : XXXXXXXX

**Inside each Token:**
Using slot 0 with a present token (0x0)
Certificate Object, type = X.509 cert
  label:
Certificate Object, type = X.509 cert
  label:
Certificate Object, type = X.509 cert
  label:      le-XXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXXX
  ID:         XXXXXXXXXXXXXXXX

**OpenSSL Engine config**
[openssl_def]
engines = engine_section

[engine_section]
pkcs11 = pkcs11_section

[pkcs11_section]
engine_id = pkcs11
dynamic_path = /usr/lib/engines/engine_pkcs11.so
MODULE_PATH = /usr/lib/libeTPkcs11.so

Соответствует из списка рассылки lipb11 о том, что идентификатор слота не является постоянным, чтобы разрешить горячее подключение https://sourceforge.net/p/opensc/mailman/message/31235423/