重启时 token slot_id 顺序发生变化

重启时 token slot_id 顺序发生变化

您好,感谢您花时间阅读本文。

问题:

我有 4 个具有相同型号和名称的令牌设备,我依靠插槽 ID(和序列号)来识别要使用哪一个。 5 个月无故障运行后,我们不得不重新启动服务器(计划维护),然后发现插槽 ID 已更改。

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://www.rfc-editor.org/rfc/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 邮件列表的相关信息,关于插槽 ID 不是永久的,以允许热插拔 https://sourceforge.net/p/opensc/mailman/message/31235423/

相关内容