这是一个针对该国家/地区的特定问题卢森堡:
在卢森堡,官方和银行业务的电子签名基础设施由该公司提供勒克斯信托公司。他们提供的 USB 记忆棒实际上是重新命名的金雅拓设备,特别是签名棒,带有可移动芯片卡的金雅拓“Gemplus USB Shell Token V2”(或类似产品),带有可识别用户的 X.509 证书和私钥。
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
出色的!
通过阅读上面的内容,我们很快就会发现:
- 需要类似智能卡读取守护进程的东西,它被称为
ccid
某事某事。更多细节在金雅拓 - 有一个打包的应用程序可以更改“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 中显式配置智能卡读卡器。具体方法如下:
在下面首选项 > 功能区:“高级”> 选项卡:“证书”> 按钮:“安全设备”您必须添加智能卡读卡器及其智能卡。这可能是任意的。
就我而言,读者首先出现:
但一段时间后(特别是在上面的 PIN 不变之后),“Gemalto USB Shell Token V2”被识别:
但在 FireFox 重新启动后,标签发生了变化:
神秘?是的!但您现在可以“加载”“GemP15-1”。这需要将 PIN 输入到智能卡(智能卡安全地保存在笔记本电脑或 LastPass 中......)
在 LuxTrust 进行测试
那么让我们回到LuxTrust 测试页和....
好吧,它仍然不起作用。不知道为什么,尽管这是一个 Java Applet,可以记录正在发生的事情以及到底在哪里遇到问题。
愤怒先生的时间到了吗?
在 RCSL 进行测试
这卢森堡公司注册处(RCSL) 可用于其他测试。他们有一个“证书登录页面”。打开它,您会看到一个“eAccess”页面(“连接到卢森堡国的在线服务”),该页面加载由CTIE - 国家信息技术中心。如果您足够快并单击“运行”按钮,您将注意到小程序可以正确访问 LuxTrust 签名棒,并将检索登录页面的用户坐标。
有用!享受。