首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使(虚拟)智能卡可用于系统服务

使(虚拟)智能卡可用于系统服务
EN

Server Fault用户
提问于 2021-07-18 17:34:45
回答 1查看 1.2K关注 0票数 0

我有一个运行WindowsServer2019DatacenterCore的VM,它使用自己的本地用户帐户(.\build)作为非交互式服务运行Jenkins构建代理。

现在我想添加代码签名。为了至少具有安全性,我希望使用基于主机上密码操作的虚拟智能卡,因此对复制密钥材料感兴趣的攻击者需要突破VM。

我配置了一个带有永久插入卡的虚拟USB CCID阅读器,它显示在Windows中:

代码语言:javascript
运行
复制
PS> Get-PnpDevice
...
Error      SmartCardReader Microsoft Usbccid Smartcard Reader (WUDF)                                        USB\VID_08E6...
...

首先,Error状态是有关的。我已经应用了这个修复,它似乎改进了一些东西(卡在引导后就会显示OK ),但这似乎不是永久性的。

然而,我真正陷入困境的问题是智能卡访问的安全模型。我可以找到使用智能卡登录的大多数文档,策略很简单:登录UI可以访问智能卡来验证凭据,然后将此访问传递给用户会话。

然而,在我的例子中,我有一个与桌面无关的非交互式登录。当我手动启动SCardSvrScDeviceEnum服务时,即使是管理员通过SSH登录也无法访问卡:

代码语言:javascript
运行
复制
The Microsoft Smart Card Resource Manager is not running.
SCardAccessStartedEvent: Service is in an unknown state.
CertUtil: -SCInfo command FAILED: 0x80070005 (WIN32: 5 ERROR_ACCESS_DENIED)
CertUtil: Access is denied.

这是合理的,从本地控制台,作为管理员,我得到

代码语言:javascript
运行
复制
PS> certutil -scinfo
The Microsoft Smart Card Resource Manager is running.
Current reader/card status:
SCardEstablishContext: The Smart Card Resource Manager is not running. 0x8010001d (-2146435043 SCARD_E_NO_SERVICE)
SCardEstablishContext failed for user scope.

这两项服务亦会在两分钟后自行终止。

问题:

  • 如何验证模拟智能卡是否已插入,并可能列出所包含的证书?
  • 我如何允许用户访问智能卡(certutil -scinfo可能会显示这一点)?
  • 如何将智能卡上已经存在的证书导入本地用户的密钥存储区?我需要原始的P7证书,还是可以从卡本身提取?
  • 我是否需要做任何事情来保持服务的持续运行,还是解决访问问题也允许它按需启动?
EN

回答 1

Server Fault用户

发布于 2022-10-20 14:46:26

我想我可能有一个解决方案: Windows似乎在Windows上选择了错误的设备驱动程序。在Windows上,设备显示为“(UMDF2)",而在桌面窗口显示为”(WUDF)“

我不知道为什么会发生这种情况,但以下几点对我来说是有效的:

  1. 打开设备管理器
  2. 右键单击显示->更新驱动程序问题的智能卡读取器设备
  3. 浏览我的电脑找司机
  4. 让我从我电脑上可用的驱动程序列表中选出
  5. 选择(WUDF)而不是UMDF2版本。
  6. 单击“下一步”完成驱动程序更改

有一点是恼人的是,如果你插入设备在不同的USB端口,然后你必须再次做同样的事情。

所以,如果有人知道如何使这件事永久化,我很高兴听到这件事。它可能涉及修改inf文件一点吗?

  • 对于损坏的UMDF2驱动程序,它使用以下inf文件:C:\Windows\System32\DriverStore\FileRepository\usbcciddriver.inf_amd64_d3361c9b119e0de8
  • 对于工作的WUDF驱动程序,它使用C:\Windows\System32\DriverStore\FileRepository\wudfusbcciddriver.inf_amd64_a32870cf151b98c5

(根据windows版本的不同,文件名的散列部分可能略有不同)

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

https://serverfault.com/questions/1069971

复制
相关文章

相似问题

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