在 Fedora 上使用“LuxTrust Signing Stick”(这是卢森堡特有的)

在 Fedora 上使用“LuxTrust Signing Stick”(这是卢森堡特有的)

这是一个针对该国家/地区的特定问题卢森堡:

在卢森堡,官方和银行业务的电子签名基础设施由该公司提供勒克斯信托公司。他们提供的 USB 记忆棒实际上是重新命名的金雅拓设备,特别是签名棒,带有可移动芯片卡的金雅拓“Gemplus USB Shell Token V2”(或类似产品),带有可识别用户的 X.509 证书和私钥。

LuxTrust 签名棒

LuxTrust 表示,该设备可以在 Windows 和 Mac 上运行,但对 Linux 的支持很弱(尽管它们支持 Ubuntu),尽管金雅拓本身为该设备提供支持和驱动程序。

从浏览器使用设备的一般功能布局似乎是这样的:

这是怎么回事

因此,我已经尝试让这项工作正常工作一段时间了,但我无法让 LuxTrust 的小程序与“签名棒”进行交互。有人在 Linux 上使用过 LuxTrust 签名棒吗?

在这个精确的例子中,我们有:

  • Firefox 37.0(附带NoScript),Java插件是:活动的
  • Oracle JDK(java -version表示:1.8.0_40-b26)
  • Fedora 20(uname -a表示:3.18.9-100.fc20.x86_64)

答案1

看起来我已经取得了一些成功。

旅程开始

所以,我们从“Linux 中间件”LuxTrust 页面基本上就是说“你只能靠自己,我们不支持你,如果事情变得梨形,那都是你自己的错。点击这里签名!”:

在此输入图像描述

我们将保持冷静,首先确保 Java 在浏览器中处于活动状态。

激活Java

如果 Java 未处于活动状态,状态测试页(可通过“支持”>“有关证书管理的问题”>“我的证书”(在页脚中)>“测试和状态”访问)将如下所示(请注意,该页面还将 Firefox 37 分类为“不受支持”,即坦白说很奇怪):

在此输入图像描述

安装 Oracle Java SDK 或 Java 运行时甲骨文网站

使 Java 浏览器插件对 Firefox 可见。看Linux Java 插件的手动安装和注册,但过程一般如下(以非root用户运行):

$ mkdir ~/.mozilla/plugins
$ cd ~/.mozilla/plugins/
$ ln -s $PATH_TO_WHERE_JAVA_HAS_BEEN_INSTALLED/jre/lib/amd64/libnpjp2.so 

现在必须检查浏览器中是否启用了 Java。

Oracle:如何在 Web 浏览器中启用 Java?Mozilla:如何在 Firefox 中关闭 Java 小程序。原则上,您只需检查“≡ > 附加组件”菜单即可。设置为“请求激活”以保持“我在这里循环!”事情的一面:

在此输入图像描述

如果您安装了 NoScript,请让 NoScript 允许 Java 小程序运行:

在此输入图像描述

最后测试于Oracle的测试页面

好的,就是这样。

安装“LuxTrust中间件”

因此,您决定安装LuxTrust_Middleware_Fedora_64bit_7.0.0-b01.rpm从 LuxTrust 下载的“中间件 RPM”。

让我们了解一些相关信息:

# rpm --query --info --package LuxTrust_Middleware_Fedora_64bit_7.0.0-b01.rpm

    Name        : libclassicclient
    Epoch       : 0
    Version     : 7.0.0
    Release     : b01.fc20
    Architecture: x86_64
    Install Date: (not installed)
    Group       : System Environment/Libraries
    Size        : 23147060
    License     : Proprietary
    Signature   : (none)
    Source RPM  : libclassicclient-7.0.0-b01.fc20.src.rpm
    Build Date  : Mon 08 Dec 2014 09:21:51 CET
    Build Host  : localhost
    Relocations : (not relocatable)
    Vendor      : Gemalto
    Summary     : Classic Client for Linux: PKCS#11 token for Gemalto Classic cards
    Description : PKCS#11 token for Gemalto Classic cards

注意名字libclassicclient。这表明这实际上是(的一部分?)“金雅拓经典客户端”。一定是这个:

我想是经典客户端吧?

此外,该许可证是“专有的”。那好吧。

这个包需要什么?事实上,有不少事情。特别是加密库。请注意,它不需要“sqlite”......

# rpm --query --package --requires LuxTrust_Middleware_Fedora_64bit_7.0.0-b01.rpm

    /bin/sh
    /bin/sh
    rpmlib(FileDigests) <= 4.6.0-1
    rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    rpmlib(CompressedFileNames) <= 3.0.4-1
    ld-linux-x86-64.so.2()(64bit)
    ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
    libatk-1.0.so.0()(64bit)
    libcairo.so.2()(64bit)
    libcrypto.so.10()(64bit)
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.14)(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)
    libc.so.6(GLIBC_2.3.2)(64bit)
    libc.so.6(GLIBC_2.3.3)(64bit)
    libc.so.6(GLIBC_2.3.4)(64bit)
    libc.so.6(GLIBC_2.3)(64bit)
    libc.so.6(GLIBC_2.4)(64bit)
    libc.so.6(GLIBC_2.7)(64bit)
    libdl.so.2()(64bit)
    libdl.so.2(GLIBC_2.2.5)(64bit)
    libfontconfig.so.1()(64bit)
    libfreetype.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3)(64bit)
    libgcc_s.so.1(GCC_4.2.0)(64bit)
    libgdk_pixbuf-2.0.so.0()(64bit)
    libgdk-x11-2.0.so.0()(64bit)
    libgio-2.0.so.0()(64bit)
    libglib-2.0.so.0()(64bit)
    libgobject-2.0.so.0()(64bit)
    libgtk-x11-2.0.so.0()(64bit)
    libidkit.so.2()(64bit)
    libiomp5.so()(64bit)
    libm.so.6()(64bit)
    libm.so.6(GLIBC_2.2.5)(64bit)
    libpango-1.0.so.0()(64bit)
    libpangocairo-1.0.so.0()(64bit)
    libpangoft2-1.0.so.0()(64bit)
    libpcsclite.so.1()(64bit)
    libpthread.so.0()(64bit)
    libpthread.so.0(GLIBC_2.2.5)(64bit)
    libpthread.so.0(GLIBC_2.3.2)(64bit)
    libQtCore.so.4()(64bit)
    libQtGui.so.4()(64bit)
    librt.so.1()(64bit)
    librt.so.1(GLIBC_2.2.5)(64bit)
    libScanAPI.so()(64bit)
    libssl.so.10()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
    libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
    libstdc++.so.6(GLIBCXX_3.4)(64bit)
    libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
    libusb-0.1.so.4()(64bit)
    rpmlib(PayloadIsXz) <= 5.2-1

好的,让我们以 root 身份安装该软件包:

# rpm --install LuxTrust_Middleware_Fedora_64bit_7.0.0-b01.rpm
    WARNING: libsqlite3.so could not be found. Creating symbolic link...
    Creating symbolic link done.

所以它实际上需要“sqlite”,但在需求中没有这么说。

谷歌搜索上面的消息表明该消息有时确实是由“Gemalto Classic Client”发出的。

现在我们在文件系统中找到了一个额外的符号链接:

/usr/lib/debug/usr/lib64/libsqlite3.so -> libsqlite3.so.0.8.6.debug

我想我们可以忍受这一点。

我们有手册

列出通过安装的文件

# rpm --query --list libclassicclient | less

显示此包实际上附带(非常好的)手册!

/usr/share/doc/libclassicclient/Classic_Client_Linux_User_Guide.pdf
/usr/share/doc/libclassicclient/ReleaseNotes.pdf

出色的!

手册首页 发行说明首页

通过阅读上面的内容,我们很快就会发现:

  1. 需要类似智能卡读取守护进程的东西,它被称为ccid 某事某事。更多细节在金雅拓
  2. 有一个打包的应用程序可以更改“LuxTrust 签名棒”(如上所述,GemPlus 智能卡读卡器)上的 PIN: /usr/bin/CCChangePinTool

安装守护进程,练习 CCChangePinTool

将“签名棒”插入某个USB端口。内核日志 ( journalctl SYSLOG_FACILITY=0) 说:

    kernel: usb 3-2: new full-speed USB device number 3 using ohci-pci
    kernel: usb 3-2: New USB device found, idVendor=08e6, idProduct=3438
    kernel: usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    kernel: usb 3-2: Product: USB SmartCard Reader
    kernel: usb 3-2: Manufacturer: Gemplus

让我们安装智能卡读取守护进程:

    # yum search ccid  

    pcsc-lite-ccid.x86_64 : Generic USB CCID smart card reader driver
    pcsc-lite-ccid-debuginfo.x86_64 : Debug information for package pcsc-lite-ccid
    libykneomgr.i686 : YubiKey NEO CCID Manager C Library
    libykneomgr.x86_64 : YubiKey NEO CCID Manager C Library

看来是pcsc-lite-ccid.因此:

    # yum install pcsc-lite-ccid

    Installing : pcsc-lite-1.8.10-2.fc20.x86_64
    Installing : pcsc-lite-ccid-1.4.13-1.fc20.x86_64

一些额外的输出被省略。现在启动守护进程:

    # systemctl start pcscd
    # systemctl status pcscd
    pcscd.service - PC/SC Smart Card Daemon
       Loaded: loaded (/usr/lib/systemd/system/pcscd.service; static)
       Active: active (running) since Mon 2015-04-06 13:12:43 CEST; 4s ago
     Main PID: 10970 (pcscd)
       CGroup: /system.slice/pcscd.service
               └─10970 /usr/sbin/pcscd --foreground --auto-exit

     systemd[1]: Started PC/SC Smart Card Daemon.
     pcscd[10970]: 00000000 utils.c:61:GetDaemonPid() Can't open /var/run/pcscd/pcscd.pid: No such file or directory
     pcscd[10970]: 00062795 commands.c:898:CmdEscape error on byte 10

基本上不难看。

现在/usr/bin/CCChangePinTool以非 root 用户身份运行。

出现一个窗口,允许您“更改 PIN”。将 PIN 设置为其现有值(此处要加倍小心!)。显然这是有效的,应用程序不会抱怨或段错误。凉爽的。

使智能卡读卡器对 Firefox 可见

(这一切均来自金雅拓手册,并非由 LuxTrust 提供)

必须在 Firefox 中显式配置智能卡读卡器。具体方法如下:

在下面首选项 > 功能区:“高级”> 选项卡:“证书”> 按钮:“安全设备”您必须添加智能卡读卡器及其智能卡。这可能是任意的。

就我而言,读者首先出现:

阅读器在 Firefox 1 中可见

但一段时间后(特别是在上面的 PIN 不变之后),“Gemalto USB Shell Token V2”被识别:

阅读器在 Firefox 2 中可见

但在 FireFox 重新启动后,标签发生了变化:

Firefox 3 中可见的阅读器

神秘?是的!但您现在可以“加载”“GemP15-1”。这需要将 PIN 输入到智能卡(智能卡安全地保存在笔记本电脑或 LastPass 中......)

在 LuxTrust 进行测试

那么让我们回到LuxTrust 测试页和....

好吧,它仍然不起作用。不知道为什么,尽管这是一个 Java Applet,可以记录正在发生的事情以及到底在哪里遇到问题。

还是不行!

愤怒先生的时间到了吗?

愤怒先生

在 RCSL 进行测试

卢森堡公司注册处(RCSL) 可用于其他测试。他们有一个“证书登录页面”。打开它,您会看到一个“eAccess”页面(“连接到卢森堡国的在线服务”),该页面加载由CTIE - 国家信息技术中心。如果您足够快并单击“运行”按钮,您将注意到小程序可以正确访问 LuxTrust 签名棒,并将检索登录页面的用户坐标。

TAM 登录小程序

有用!享受。

相关内容