如何在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驱动路径,比如:
(路径根据你实际安装OpenSC的位置调整)pcsc-driver "C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll" - 尝试同时启用
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. 启用调试日志定位问题
- 执行带调试日志的命令,查看详细错误信息:
日志里会显示scdaemon尝试连接读卡器、识别卡片的全过程,能帮你定位是哪一步出了问题(比如读卡器通信失败、卡片APDU命令执行失败等)gpg --debug-level 9 --card-status
备注:内容来源于stack exchange,提问作者Roman Riabenko
相关产品推荐
相关产品推荐

