8.8. 适用于外部 USB 智能卡读卡器的 CCID IFD 处理程序 (Oracle Solaris)

8.8.1. 如何安装 CCID IFD 处理程序
8.8.2. 如何卸载 CCID IFD 处理程序
8.8.3. 已知问题

Sun Ray Software 在运行 Oracle Solaris 的 Sun Ray 服务器上支持 CCID IFD 处理程序 V1.3.10,其提供对连接到 Sun Ray Client 和运行 Oracle Virtual Desktop Client 的客户端计算机的符合 CCID 的外部 USB 智能卡读卡器的访问。CCID IFD 处理程序 V1.3.10 是用于 PC/SC-lite API 的接口设备处理程序 (Interface Device Handler, IFD) 的 Sun Ray 实现。该 CCID IFD 处理程序在与 Sun Ray Software 提供的智能卡服务结合使用时,会启用符合 PC/SC 标准的应用程序和中间件,以使用桌面客户端上符合 CCID 的外部 USB 智能卡读卡器。

有关所有必要步骤的详细信息,请参见第 8.6.2 节 “如何配置符合 CCID 的外部 USB 智能卡读卡器以用于验证 (Oracle Solaris)”

8.8.1. 如何安装 CCID IFD 处理程序

要安装 CCID IFD 处理程序,请按以下说明进行操作。

注意

要在 Oracle Solaris Trusted Extensions 环境中安装 CCID IFD 处理程序,请从 ADMIN_LOW(全局区域)以 root 用户身份进行安装。

  1. 下载并解压缩 CCID IFD 处理程序。

    Sun Ray Software 5.4 发行版本中不提供 CCID IFD 处理程序。但您可以从 5.1.1 Media Pack(5.1.1 介质包)下载 PC/SC-lite 1.3 组件,其中包含 CCID IFD 处理程序 v1.3.10 分发版。只需安装 CCID IFD 处理程序。Sun Ray Software 5.4 已安装了 PC/SC-lite。

  2. 在 Sun Ray 服务器上成为超级用户。

  3. 安装 CCID IFD 处理程序:

    # svcadm disable pcscd
    # /usr/sbin/pkgadd -d . SUNWusb-scrdr
    # svcadm enable pcscd

8.8.2. 如何卸载 CCID IFD 处理程序

要删除 CCID IFD 处理程序,请按以下说明进行操作。

注意

要从 Oracle Solaris Trusted Extensions 环境中卸载 CCID IFD 处理程序,请从 ADMIN_LOW(全局区域)以 root 用户身份进行卸载。

  1. 在 Sun Ray 服务器上成为超级用户。

  2. 卸载 CCID IFD 处理程序:

    # svcadm disable pcscd
    # /usr/sbin/pkgrm SUNWusb-scrdr
    # svcadm enable pcscd

8.8.3. 已知问题

下面是使用外部 USB 智能卡读卡器时的一些已知问题。

8.8.3.1. PC/SC-lite USB 枚举延迟

目前,外部 USB 读取器对于 PC/SC-lite 客户端应用程序变为可见之前有几秒的延迟。只要出现以下情况,此延迟就会发生:为用户会话启动 PC/SC-lite 实例时以及 USB 总线需要重新枚举时。具体而言,外部 USB 读取器无法对应用程序立即可见的枚举延迟会在以下情况中发生:

  • PC/SC-lite 实例首次启动时。也就是应用程序首次尝试从某个给定会话内访问 PC/SC-lite 时。

  • PC/SC-lite 实例由于非活动的闲置期而自我终止后自动重新启动时。该情况与首个情况类似。

  • 会话移动性事件发生,导致在系统重新枚举目标 Sun Ray Client 上的外部 USB 读取器的同时产生读取器可见性延迟时。目前针对 Sun Ray Client 上的外部 USB 读取器的 CCID IFD 处理程序不支持会话移动性。

  • 在 Sun Ray 会话中对 Sun Ray Client 进行重置或关开机循环时。

8.8.3.2. 枚举延迟会对某些应用程序造成问题

某些应用程序(例如 Windows 连接器上的 Windows Smart Card 登录程序)并不适应与 USB 热插拔模式相关联的枚举延迟。此类应用程序看不到其首次扫描 PC/SC-lite 读取器列表后显示的读取器。也就是说,后来显示的读取器可能由于上述任一情形而被应用程序忽略。

有时应用程序会使用查找到的首个读取器。在 Sun Ray Client 上,该读取器一定是内部读取器,除非该读取器已由以下命令禁用:

# utdevadm -d -s internal_smartcard_reader

附加解决方案的目的在于确保 USB 读取器列表在应用程序扫描前就对其可见。解决该问题的一种方法是防止 PC/SC-lite 实例在经过预先指定的空闲期后超时。您可以通过编辑 /etc/smartcard/pcscd-SunRay.conf 文件,将 INSTANCE_TIMEOUT 参数更改为 -1,来禁用实例超时设置。系统提供的默认值为 600 秒(10 分钟)。

当通过更改 INSTANCE_TIMEOUT 禁用非活动的超时设置时,PC/SC-lite 实例仍然存在,直到用户的会话终止。这意味着进程表中可能存在很多使用系统资源的 PC/SC-lite 进程。

由于系统中用户会话数不断增长,对于这可能带来多大的影响,我们目前没有相关数据(也就是说,我们关于其扩展情况的数据不足)。很多情况下,这可能根本不算问题,唯一的影响就是进程表中会存在更多非活动的进程,因而显得更为杂乱。