Помилки смарт-карти


8

У мене смарт-карта CAC і USB-зчитувач карт SCM Microsystems SCR3310 . Я запускаю Windows 7 Ultimate з 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, що є ВЗАЄМО ВІДПОВІДЬ .

Як сказати, що протокол не підтримується? Що водій робить інакше, ніж коли він працював? Зауважте, що я також просто спробував це з новим CAC, і я бачу подібну поведінку. Проблема з читачем карт або драйвером?


Зважаючи на те, що я щойно замінив зчитувач (і перевстановив драйвери, перезавантажив тощо), чи не так у моїй смарт-картці? Я не припускаючи, тому що це робить роботу з іншим читачем на іншу систему. Я не пробував іншого читача в одній системі.

Насправді той самий зчитувач, підключений до Windows 7 VM на одній фізичній машині, працює просто чудово! Щось явно зламане, і це ганяє мене, намагаючись зрозуміти, що.

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


Я щойно провів чудовий сеанс чату з Jasper V від Microsoft, який дав абсолютно нульове розуміння проблеми: pastebin.com/dvU3dNfa
Jonathon Reinhart

У мене така ж проблема, ви знаходите рішення?
Тобія

Я встановив Linux.
Джонатан Райнхарт

Привіт,
Ланкімарт

Відповіді:


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
Давор Йосипович

Вибачте, але я не розумію, що це повинно досягти. Мій пристрій чітко підключено, а драйвер спілкується з читачем.
Джонатан Райнхарт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.