我正在尝试为 LTS 20.04 系统的所有用户设置智能卡浏览器支持。我读过不少指南,包括这个:
https://help.ubuntu.com/community/CommonAccessCard
但大多数似乎都使用类似这样的命令:
modutil -dbdir sql:.pki/nssdb/-add“OpenSC”-libfile /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
它可以工作,但每个用户都必须运行它(在他们使用的每个系统上)。如果我尝试创建 /etc/pki/nssdb 并使用类似的命令,它似乎什么也没做。
我遇到过以下情况:
dpkg-divert --rename --add /usr/lib/firefox/libnssckbi.so
dpkg-divert --rename --add /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so
ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
这显然对其他人有用,但即使这样做了,除非我修改 ~/.pki/nssdb Chrome 不起作用,除非我向 Firefox 添加安全设备(我至少可以使用 .json 文件在整个系统范围内进行操作)否则它也不会“看到”我的智能卡。
(我甚至安装了 Edge 并尝试了它,但它的行为与 Chrome 完全相同。无论如何都无法让 Teams 应用程序看到我的智能卡,但那是另一回事。)
答案1
对于 Firefox,您可以使用全局策略
{
"policies": {
"SecurityDevices": {
"scInterface": "/usr/local/lib/libcvP11.so"
}
}
}
放置在/usr/lib/firefox/distribution/policies.json
(至少对于 Ubuntu 20.04) 下,您可以参考更多信息https://support.mozilla.org/en-US/kb/managing-policies-linux-desktops有关所有可能的政策的列表,您可以参考https://github.com/mozilla/policy-templates
目前我还没有找到为 Chromium 实现此目的的方法。似乎可以有一个全局 nss 数据库,但 Chromium 似乎忽略了它。期待听到一个可行的解决方案,很抱歉在这里无法提供一个。