我正在使用 Yubikey 4,其证书已加载到 PIV 插槽 9a(PIV 身份验证;OpenSC 插槽 0)。
在 Firefox 64 中,我使用 OpenSC PKCS#11 驱动程序。
我想要实现的是通过提供一次我的用户 PIN 码来“解锁”这个插槽(我不确定这里用“解锁”这个词是否合适),比如通过 shell 脚本。之后,Firefox 应该能够使用此插槽,而无需提示用户输入 PIN(Firefox 应该将该插槽视为“已登录”)。
我希望我可以在pkcs11-tool -l --login-type user -L
命令行上使用类似的东西。这个命令本身可以工作,但它不会导致插槽在 Firefox 中转换为“登录”状态。Firefox 仍会在第一次打开网站时要求输入 PIN。
输出pkcs11-tool -l --login-type user -L
:
可用插槽: 插槽 0(0x0):Yubico Yubikey 4 OTP+U2F+CCID 标记标签:#redacted# 代币制造商:piv_II 令牌模型:PKCS#15 模拟 令牌标志:需要登录、rng、令牌已初始化、PIN 已初始化 硬件版本:0.0 固件版本:0.0 序列号:0001112223334445 引脚最小/最大:4/8 登录“#redacted#”。 请输入用户 PIN:
$ opensc-工具-i OpenSC 0.19.0 [gcc 4.2.1 兼容 Apple LLVM 9.1.0(clang-902.0.39.2)] 启用的功能:锁定 zlib readline openssl pcsc(/System/Library/Frameworks/PCSC.framework/PCSC)
对我来说,OpenSC 配置参数“锁定登录“似乎描述了我想要的:
默认情况下,OpenSC PKCS#11 模块不会在您通过 C_Login 验证卡身份后锁定您的卡(默认值:false)。因此,不会阻止其他用户或其他应用程序连接到卡并执行加密操作(这可能是可能的,因为您已经通过卡验证身份)。
我没有手动设置任何 OpenSC 配置值。据我所知,运行上述 pkcs11-tool 命令会调用 C_Login——但如果没有在 Firefox 中输入 PIN,该插槽仍然无法使用。
这可以通过 OpenSC 实现吗?
答案1
您可以“use_pin_caching = true;”这样 OpenSC 将在应用程序启动时缓存该引脚,并在需要时再次使用它。
大多数 Yubico 设备未正确实现“选择 AID”命令的处理以选择卡上的小程序,并且 NIST 规范规定 PIV 小程序将是启动时的默认小程序。当多个应用程序尝试使用令牌时,这会导致尝试保持登录状态时出现问题。(在 OpenSC 源代码中的 card-piv.c 中查找“card_issues”。)
FireFox 和大多数应用程序一样,都假设首次登录时需要登录。因此使用脚本来验证 PIN 不会有帮助。
还要查看“card_drivers = PIV-II;”,以避免另一个应用程序为您没有的卡运行“选择 AID”,这也会丢失登录状态。(card_issues = CI_OTHER_AID_LOSE_STATE)