Ошибки смарт-карты

8

У меня есть смарт-карта CAC и устройство чтения карт USB SCM Microsystems SCR3310 . Я использую Windows 7 Ultimate с пакетом обновления 1 (SP1).

Эта настройка работала просто отлично. Когда я вставлял свой CAC, мои сертификаты немедленно распространялись в хранилище сертификатов (как свидетельствует диспетчер сертификатов certmgr.msc), и я мог входить на веб-сайты, которым для доступа требовался CAC.

Недавно я перестал получать доступ к веб-сайтам. Глядя в диспетчер сертификатов, я вижу, что присутствует только один, а иногда и два моих сертификата. Если я их удаляю и заново вставляю свою карту, может появиться другой сертификат.

Я только что вернулся и заменил читателя той же моделью, так что я знаю, что это не преступник.

Я наконец-то подумал посмотреть системный журнал и заметил следующие ошибки при вставке смарт-карты:

введите описание изображения здесь


Ошибки в хронологическом порядке:

Smart Card Service    Event ID: 610
   Smart Card Reader 'SCM Microsystems SCR33xx v2.0 USB SC Reader 0' rejected
   IOCTL TRANSMIT: Incorrect function.  If this error persists, your smart card
   or reader may not be functioning correctly.

   Command Header: 00 c0 00 00

WudfUsbccidDrv        Event ID: 11
   A Request has returned failure.
   MsgType: 0x80
   ICCStatus: 0x0
   CmdStatus: 0x1
   Error: 0xf6               // ICC_PROTOCOL_NOT_SUPPORTED
   SW1: 0x0
   SW2: 0x0

WudfUsbccidDrv        Event ID: 11
   An operation has failed (0x0, 0x0, 0x0, 0x0).
   ScT0Transmit: Failed to send request at TPDU level.
   HResult: The specified request is not a valid operation for the target device.
   // Note: this one comes from WUDFUsbccidDriver.dll CMyDevice::UsbScT0Transmit+7D0h

WudfUsbccidDrv        Event ID: 10
   Request[0](CLS=0x0,INS=0xc0,P1=0x0,P2=0x0,Lc=0,Le=256,.NETServiceMethod=0x0)

Похоже, что аппаратное обеспечение указало сбой во время IOCTL TRANSMIT, который просачивался через структуру драйвера пользовательского режима.

Изменить: в соответствии со спецификацией CCID, кажется, что карта отвечает обратно bmCommandStatus = 1 - Failed (error code provided by the error register). И Error = ICC_PROTOCOL_NOT_SUPPORTED -10 (F6h). Я предполагаю, что драйвер переводит эту ошибку в «HResult: указанный запрос не является допустимой операцией для целевого устройства». сообщение.

Кроме того, отправляемая команда была INS = 0xC0, которая является GET RESPONSE .

Как можно сказать, что протокол не поддерживается? Что делает драйвер иначе, чем когда он работал? Обратите внимание, что я также только что попробовал это с новым CAC, и я вижу подобное поведение. Проблема с картридером или драйвером?


Учитывая, что я только что заменил считыватель (и переустановил драйверы, перезагрузил и т. Д.), Что-то не так с моей смарт-картой? Я не предполагая, потому что это делает работу с другим читателем на другую систему. Я не пробовал другой читатель в той же системе.

Фактически, тот же читатель, подключенный к виртуальной машине Windows 7 на той же физической машине, работает просто отлично! Что-то явно сломано, и это сводит меня с ума, пытаясь понять, что.

Так в чем проблема?

Джонатон Рейнхарт
источник
У меня только что была прекрасная сессия чата с Jasper V от Microsoft, которая предоставила абсолютно нулевое понимание проблемы: pastebin.com/dvU3dNfa
Джонатон Рейнхарт
У меня такая же проблема, вы нашли решение?
Тобиа
Я установил Linux.
Джонатон Рейнхарт
Привет @JonathonReinhart, извините, что взломал этот пост, но у меня точно такая же проблема, вы когда-нибудь находили решение?
Lankymart

Ответы:

2

На всякий случай, если бы кто-то застрял с этой проблемой - я пытался исправить это как целый день.

Вот решение:

  1. Для 64-битной Windows - перейдите к разделу реестра на

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers
    

Там уже должно быть несколько читателей. А если нет, то по этой причине у вас могут быть установлены все драйверы, но они по-прежнему не работают.

  1. Перейти Device Manager, найти читатель в вопросе , то обратите внимание на эту строку на вкладке Подробности: Bus reported device description.

  2. Создайте подключ для ключа выше. Имя должно быть точно таким же Bus reported device description. Затем добавьте счетчик в конце. Таким образом, ключ должен быть таким:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers\O2Micro CCID SC Reader 0
    
  3. Теперь создайте пару строковых значений: первое с именем устройства и второе для групп. Вот мой пример:

    Device = O2Micro CCID SC Reader 0
    
    Groups = SCard$DefaultReaders
    

Вот и все. Чтобы это работало, отключите ридер и подключите его обратно. В случае внутренних устройств, вам может потребоваться перезагрузить компьютер. А вот .regпример файла (измените имя и номер устройства на ваши собственные значения):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers\O2Micro CCID SC Reader 0]
"Device"="O2Micro CCID SC Reader 0"
"Groups"=hex(7):53,00,43,00,61,00,72,00,64,00,24,00,44,00,65,00,66,00,61,00,75,\
00,6c,00,74,00,52,00,65,00,61,00,64,00,65,00,72,00,73,00,00,00,00,00
Владимир Молодняков
источник
Хотя ваш вопрос очень конкретный, спасибо, что поделились своими мыслями. +1
Давор Йосипович
Извините, но я не понимаю, что это должно сделать. Мое устройство четко подключено, а драйвер общается с ридером.
Джонатон Рейнхарт