8

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

Эта настройка работала просто отлично. Когда я вставлял свой CAC, мои сертификаты немедленно распространялись в хранилище сертификатов (как свидетельствует Certificate Manage, 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 на той же физической машине, работает просто отлично! Что-то явно сломано, и это сводит меня с ума, пытаясь понять, что.

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

1 ответ1

1

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

Вот решение:

  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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .