首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Arch Linux (Manjaro)上使用Windows上的Yubikey设置

在Arch Linux (Manjaro)上使用Windows上的Yubikey设置
EN

Unix & Linux用户
提问于 2019-10-22 22:17:16
回答 1查看 1.8K关注 0票数 -1

我有一个安装在Windows上的YubiKey,我试图在Manjaro (Chrome上)上使用它。我在互联网上做了很多研究,但我似乎无法解决这个问题。

当使用ykman list时,我得到以下信息:

代码语言:javascript
复制
YubiKey 5 NFC [OTP+FIDO+CCID] Serial: ...

我试着在yubico网站上跟踪D3

另外,我还找到了ArchWiki关于YubiKey的文章:我在机器上安装了libu2f-host,并将70-u2f.rules添加到了/etc/udev/rules.d/目录中(尽管说明中说在安装libu2f-host时,规则应该自动添加)。

而且,如果我使用ykman-gui,我会看到以下接口:

然而,当我打开Chrome并尝试登录到一个应该使用YubiKey的网站时,我会得到以下错误:

上面写着:

代码语言:javascript
复制
No valid client certificate found in the request. No valid certificates found in the user's certificate store.

也许值得注意的是,如果我根本不连接我的YubiKey,我会得到同样的错误消息!

那么,有什么办法能让这件事成功吗?是不是少了一步?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-10-22 22:59:02

看上去该网站正在期待一个客户端证书,因此它可能专门支持YubiKey的PIV (智能卡)模式,而不是FIDO U2F模式。

要支持这一点,您需要安装ccidopensc包,需要为modutil工具安装nss包,然后需要配置Chrome以使用/usr/lib/opensc-pkcs11.so。为此,首先关闭浏览器的所有实例,并使用如下命令:

代码语言:javascript
复制
modutil -dbdir sql:$HOME/.pki/nssdb/ -add "Smart card/YubiKey PKCS#11" -libfile /usr/lib/opensc-pkcs11.so

本质上,YubiKey PIV模式模拟一个与CCID兼容的智能卡读取器和一个PKCS#11兼容智能卡的组合。

(资料来源:ArchWiki YubiKey页面的这一部分CAC智能卡身份验证说明.)

CCID是与类似USB连接的智能卡读写器接口的硬件标准,PKCS#11是与PIV智能卡通信的软件标准。为了弥补两者之间的差距,用于ccid服务的pcscd驱动程序提供一个PC/SC软件接口,用于与任何类似智能卡的设备进行任何用途的低级别通信;opensc提供一个库,该库使用低级别的PC/SC接口,并为特定的PIV目的提供更高级别的PKCS#11兼容的软件接口。(是的,这是一个复杂的、多层次的系统。)

与Chrome一样,Chrome使用NSS共享DB$HOME/.pki/nssdb用于证书管理。命令添加了对OpenSC PKCS#11库的引用,该库用于访问兼容的智能卡读卡器和类似的设备:它本质上告诉任何使用共享NSS DB (包括Chrome)的设备“您可以使用类似智能卡的设备作为客户端证书的潜在来源进行身份验证,下面是如何与这台计算机的智能卡读取器子系统进行通信。”

此命令不要求在运行YubiKey时连接它,但运行命令时Chrome浏览器运行时必须是而不是:如果浏览器正在运行,它将已经读取NSS,并在退出时用旧值覆盖它,从而有效地取消命令。

出于某种原因,Chrome不包括用于配置此设置的GUI,因此需要来自nss包的D13工具来配置它。

如果需要对此设置进行故障排除,首先插入YubiKey并使用opensc-tool --list-readers验证OpenSC层是否看到了YubiKey。答复应与此类似:

代码语言:javascript
复制
$ opensc-tool --list-readers
# Detected readers (pcsc)
Nr.  Card  Features  Name
0    Yes             Yubico YubiKey OTP+FIDO+CCID 00 00

如果这不起作用,请验证pcscd守护进程是否正在运行。

然后使用opensc-tool --reader N --name -v,其中N是前面命令输出的最左边列中的YubiKey的“读卡器号”(如果没有其他类似智能卡读取器的设备,则应该为0),以验证OpenSC确认YubiKey上存在PIV内容。后一条命令的答案应该包括这一行:

代码语言:javascript
复制
Card name: Personal Identity Verification Card

故障排除的第二部分是启动Chrome浏览器并转到设置->高级->隐私和安全->管理证书。此时,系统应该弹出一个窗口提示输入YubiKey PIN:这是需要访问YubiKey以显示其信息的副作用。这验证了Chrome现在可以使用PKCS#11库通过OpenSC访问YubiKey PIV功能。

输入PIN后,“管理证书”显示的“您的证书”页面应该指示至少有一个可用的硬件支持客户端证书。此时您可以选择查看证书:信息应该与YubiKey上的任何内容相匹配,也就是说,如果您对内容有疑问,应该询问向您颁发YubiKey的人员或组织。

如果存储在YubiKey上的证书对Chrome是可见的,那么现在应该可以访问经过YubiKey PIV认证的站点了。一旦浏览器提示输入YubiKey PIN,它将能够访问YubiKey,直到您退出浏览器或拔掉YubiKey,因此它不应该在每个浏览器会话中提示PIN超过一次。

如果插入YubiKey时浏览器已经在运行,则可能需要几秒钟才能识别YubiKey已插入。因此,插入密钥后,您应该等待几秒钟,然后单击指向经过身份验证的站点的链接。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/548210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档