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

33904
Jonathon Reinhart

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

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

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

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

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

enter image description here


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

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

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

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

1 ответ на вопрос

1
Vladimir Molodnyakov

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

Вот решение:

  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 Davor Josipovic 9 лет назад 0
Извините, но я не понимаю, что это должно сделать. Мое устройство четко подключено, а драйвер общается с ридером. Jonathon Reinhart 9 лет назад 0