You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows 10系统下使用Avtor CR-371M读卡器搭配OpenPGP智能卡?

如何在Windows 10系统下使用Avtor CR-371M读卡器搭配OpenPGP智能卡?

问题背景

我有一张OpenPGP卡,之前在其他电脑搭配不同读卡器使用时,能正常通过GnuPG签名邮件,完全没问题。现在我想在Windows 10桌面通过乌克兰Avtor品牌的CR-371M读卡器(乌克兰语:Автор КР-371М),搭配Gpg4win来使用这张卡,目的是能在邮件客户端里签名邮件。

读卡器本身是正常工作的——比如它能和其他类型的智能卡配合IIT End User CA-1 Sign网页扩展及对应的EUSign正常使用。但运行gpg --card-status时却遇到了错误:

C:\Users\user>gpg --card-status

gpg: selecting card failed: No such device

gpg: Не вдалося отримати доступ до картки OpenPGP: No such device

(乌克兰语错误和英文的“gpg: selecting openpgp failed: No such device / gpg: OpenPGP card not available: No such device”意思一致)

设备管理器里没有出现类似“Lenovo Keyboard Smartcard Reader”这类有问题的驱动,反而显示:

  • 一个“Unknown Smart Card”设备,搭配“Unknown Smart Card”驱动
  • 一个“Microsoft Usbccid Smartcard Reader (WUDF)”设备,驱动为同名,可选切换到“Microsoft Usbccid Smartcard Reader (UMDF2)”

另外,Kleopatra的卡片标签页里也看不到这张OpenPGP卡。

已尝试的操作

我已经试过这些方法,但都没解决问题:

  • 参考Security SE的回答创建了scdaemon.conf文件,还安装了OpenSC
  • 用PowerShell确认读卡器能被系统识别:
    PS C:\Users\user> Get-PnpDevice -Class SoftwareDevice | Where-Object {$_.FriendlyName -like "*Reader*"} | Select-Object -ExpandProperty FriendlyName
    
    Avtor SC Reader 371 0
    
  • 编辑scdaemon.conf,尝试添加以下任意一行或两行:
    disable-ccid
    reader-port Avtor SC Reader 371 0
    
  • 重启gpg-agent:
    PS C:\Users\user\AppData\Roaming\gnupg> gpg-connect-agent killagent /bye
    PS C:\Users\user\AppData\Roaming\gnupg> gpg-connect-agent /bye
    
  • 在另一台Windows 10机器上测试,结果完全一样
  • 验证读卡器能正常识别非OpenPGP的CryptoCard-338智能卡,说明读卡器的ISO 7816接口是正常的

排查分析

根据设备规格和协议要求,理论上两者应该兼容:

  • Avtor CR-371M支持PC/SC、CCID协议,系统自带的CCID驱动就能用,不需要厂商专用驱动
  • OpenPGP卡支持T=1协议,兼容大多数芯片卡终端,且要求读卡器支持CCID/PC/SC、T=1协议,这些读卡器都满足
  • 目前怀疑是驱动匹配问题或者中间件(比如scdaemon、OpenSC)配置问题,另外还有一个可能性:Kleopatra的卡片标签页显示支持OpenPGP v2.0 - v3.3,而我的OpenPGP卡是v3.4版本,会不会是版本兼容问题?

可以尝试的解决方案

1. 验证OpenPGP卡版本与Kleopatra的兼容性

  • 先更新Kleopatra到最新版本,看看新版是否已经支持OpenPGP v3.4
  • 暂时绕过Kleopatra,用纯命令行工具测试:执行gpg --card-status或者gpg --edit-card,看是否能识别到卡——有时候GUI工具的版本支持会滞后于命令行工具

2. 优化scdaemon配置

  • 确保reader-port的名称和Get-PnpDevice输出的完全一致(比如你的是Avtor SC Reader 371 0,不要写错)
  • 如果安装了OpenSC,尝试在scdaemon.conf里指定OpenSC的PC/SC驱动路径,比如:
    pcsc-driver "C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll"
    
    (路径根据你实际安装OpenSC的位置调整)
  • 尝试同时启用disable-ccid和指定reader-port,或者单独测试其中一个配置,避免冲突

3. 重新配置OpenSC

  • 卸载现有OpenSC,重新下载最新版本安装,安装时选择“完整安装”,确保包含所有驱动和组件
  • 安装完成后,执行opensc-tool --list-readers和opensc-tool --card-info,看OpenSC能不能识别到你的OpenPGP卡——如果OpenSC能识别,说明问题出在gpg的scdaemon和OpenSC的配合上

4. 修复智能卡的驱动识别

  • 打开设备管理器,找到“Unknown Smart Card”设备,右键选择“更新驱动程序”
  • 选择“浏览我的计算机以查找驱动程序软件”,然后指向OpenSC的安装目录(比如C:\Program Files\OpenSC Project\OpenSC\drivers),让系统尝试匹配驱动
  • 或者尝试安装OpenPGP卡官方提供的驱动(如果有的话)

5. 启用调试日志定位问题

  • 执行带调试日志的命令,查看详细错误信息:
    gpg --debug-level 9 --card-status
    
    日志里会显示scdaemon尝试连接读卡器、识别卡片的全过程,能帮你定位是哪一步出了问题(比如读卡器通信失败、卡片APDU命令执行失败等)

备注:内容来源于stack exchange,提问作者Roman Riabenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:47:58