Устранение неполадок со смарт-картой
В этой статье описываются средства и службы, которые разработчики интеллектуальных карта могут использовать для выявления проблем с сертификатами при развертывании смарт-карта.
Для отладки и трассировки проблем интеллектуального карта требуются различные средства и подходы. В следующих разделах содержатся рекомендации по инструментам и подходам, которые можно использовать.
- Certutil
- Отладка и трассировка с помощью препроцессора трассировки программного обеспечения Windows (WPP)
- Протокол Kerberos, центр распространения ключей (KDC) и отладка и трассировка NTLM
- Служба смарт-карт
- Интеллектуальные средства чтения карта
- Диагностика CryptoAPI 2.0
Certutil
Полное описание Certutil, включая примеры его использования, см. в разделе Certutil [W2012].
Вывод списка сертификатов, доступных в смарт-карта
Чтобы получить список сертификатов, доступных в смарт-карта, введите certutil.exe -scinfo
.
Примечание.
Для этой операции ввод ПИН-кода не требуется. Если вам будет предложено ввести ПИН-код, можно нажать клавишу ESC.
Удаление сертификатов в смарт-карта
Каждый сертификат заключен в контейнер. При удалении сертификата на смарт-карта удаляется контейнер для сертификата.
Чтобы найти значение контейнера, введите certutil.exe -scinfo
.
Чтобы удалить контейнер, введите certutil.exe -delkey -csp "Microsoft Base Smart Card Crypto Provider" "<ContainerValue>"
.
Отладка и трассировка с помощью WPP
WPP упрощает трассировку работы поставщика трассировки. Он предоставляет механизм, позволяющий поставщику трассировки регистрировать двоичные сообщения в режиме реального времени. Зарегистрированные сообщения можно преобразовать в удобочитаемую трассировку операции. Дополнительные сведения см. в разделе Диагностика с помощью WPP — блог NDIS.
Включение трассировки
С помощью WPP используйте одну из следующих команд, чтобы включить трассировку:
tracelog.exe -kd -rt -start <FriendlyName> -guid <GUID> -f .<LogFileName*>.etl -flags <flags> -ft 1
logman.exe start <FriendlyName> -ets -p {<GUID>} -<Flags> -ft 1 -rt -o .<LogFileName><em>.etl -mode 0x00080000</em>
Параметры, приведенные в следующей таблице, можно использовать.
Понятное имя | Код GUID | Флажки |
---|---|---|
scardsvr |
13038e47-ffec-425d-bc69-5707708075fe | 0xffff |
winscard |
3fce7c5f-fb3b-4bce-a9d8-55cc0ce1cf01 | 0xffff |
basecsp |
133a980d-035d-4e2d-b250-94577ad8fced | 0x7 |
scksp |
133a980d-035d-4e2d-b250-94577ad8fced | 0x7 |
msclmd |
fb36caf4-582b-4604-8841-9263574c4f2c | 0x7 |
credprov |
dba0e0e0e0-505a-4ab6-aa3f-22f6f743b480 | 0xffff |
certprop |
30eae751-411f-414c-988b-a8bfa8913f49 | 0xffff |
scfilter |
eed7f3c9-62ba-400e-a001-658869df9a91 | 0xffff |
wudfusbccid |
a3c09ba3-2f62-4be5-a50f-8278a646ac9d | 0xffff |
Примеры:
Чтобы включить трассировку для службы SCardSvr, выполните следующие действия:
tracelog.exe -kd -rt -start scardsvr -guid \#13038e47-ffec-425d-bc69-5707708075fe -f .\scardsvr.etl -flags 0xffff -ft 1
logman.exe start scardsvr -ets -p {13038e47-ffec-425d-bc69-5707708075fe} 0xffff -ft 1 -rt -o .\scardsvr.etl -mode 0x00080000
Включение трассировки для scfilter.sys
:
tracelog.exe -kd -rt -start scfilter -guid \#eed7f3c9-62ba-400e-a001-658869df9a91 -f .\scfilter.etl -flags 0xffff -ft 1
Остановка трассировки
С помощью WPP используйте одну из следующих команд, чтобы остановить трассировку:
tracelog.exe -stop <*FriendlyName*>
logman.exe -stop <*FriendlyName*> -ets
Например, чтобы остановить трассировку:
tracelog.exe -stop scardsvr
logman.exe -stop scardsvr -ets
Отладка и трассировка протокола Kerberos, KDC и NTLM
Эти ресурсы можно использовать для устранения неполадок с этими протоколами и KDC:
- Советы по устранению неполадок Kerberos и LDAP
- Комплект драйверов Windows (WDK) и средства отладки для Windows (WinDbg). Средство журнала трассировки в этом пакете SDK можно использовать для отладки ошибок проверки подлинности Kerberos.
Чтобы начать трассировку, можно использовать Tracelog
. Различные компоненты используют разные guid элемента управления, как описано в этих примерах. Дополнительные сведения см. в разделе Tracelog
Протокол NTLM
Чтобы включить трассировку для проверки подлинности NTLM, выполните в командной строке следующую команду:
tracelog.exe -kd -rt -start ntlm -guid \#5BBB6C18-AA45-49b1-A15F-085F7ED0AA90 -f .\ntlm.etl -flags 0x15003 -ft 1
Чтобы остановить трассировку для проверки подлинности NTLM, выполните следующую команду:
tracelog -stop ntlm
Проверка подлинности Kerberos
Чтобы включить трассировку для проверки подлинности Kerberos, выполните следующую команду:
tracelog.exe -kd -rt -start kerb -guid \#6B510852-3583-4e2d-AFFE-A67F9F223438 -f .\kerb.etl -flags 0x43 -ft 1
Чтобы остановить трассировку для проверки подлинности Kerberos, выполните следующую команду:
tracelog.exe -stop kerb
KDC
Чтобы включить трассировку для KDC, выполните в командной строке следующую команду:
tracelog.exe -kd -rt -start kdc -guid \#1BBA8B19-7F31-43c0-9643-6E911F79A06B -f .\kdc.etl -flags 0x803 -ft 1
Чтобы остановить трассировку для KDC, выполните в командной строке следующую команду:
tracelog.exe -stop kdc
Чтобы остановить трассировку с удаленного компьютера, выполните следующую команду:
logman.exe -s <ComputerName>
Примечание.
Расположение по умолчанию для logman.exe — %systemroot%system32. Используйте параметр -s , чтобы указать имя компьютера.
Настройка трассировки с помощью реестра
Вы также можете настроить трассировку, изменив значения реестра Kerberos, показанные в следующей таблице.
Элемент | Параметр раздела реестра |
---|---|
Протокол NTLM | HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 Имя значения: NtLmInfoLevel Тип значения: DWORD Данные значения: c0015003 |
Kerberos | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos Имя значения: LogToFile Тип значения: DWORD Данные о значении: 00000001 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters Имя значения: KerbDebugLevel Тип значения: DWORD Данные значения: c0000043 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters Имя значения: LogToFile Тип значения: DWORD Данные о значении: 00000001 |
KDC | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc Имя значения: KdcDebugLevel Тип значения: DWORD Данные значения: c0000803 |
Если вы использовали Tracelog
, найдите следующий файл журнала в текущем каталоге: kerb.etl/kdc.etl/ntlm.etl
.
Если вы использовали параметры раздела реестра, показанные в предыдущей таблице, найдите файлы журнала трассировки в следующих расположениях:
- NTLM:
%systemroot%\tracing\msv1_0
- Kerberos:
%systemroot%\tracing\kerberos
- KDC:
%systemroot%\tracing\kdcsvc
Для декодирования файлов трассировки событий можно использовать Tracefmt
(tracefmt.exe).
Tracefmt
— это программа командной строки, которая форматирует и отображает сообщения трассировки из файла журнала трассировки событий (ETL) или сеанса трассировки в реальном времени.
Tracefmt
может отображать сообщения в окне командной строки или сохранять их в текстовом файле. Он находится в подкаталоге \tools\tracing комплекта драйверов Windows (WDK). Дополнительные сведения см. в статье Tracefmt
.
Служба смарт-карт
Интеллектуальная служба диспетчера ресурсов карта выполняется в контексте локальной службы. Он реализуется как общая служба процесса узла служб (svchost).
Чтобы проверка, запущена ли служба смарт-карт, выполните приведенные далее действия.
- Нажмите клавиши CTRL+ALT+DEL, а затем выберите Запустить диспетчер задач.
- В диалоговом окне Диспетчер задач Windows выберите вкладку Службы .
- Выберите столбец Имя , чтобы отсортировать список в алфавитном порядке, а затем введите s
- В столбце Имя найдите SCardSvr, а затем просмотрите столбец Состояние , чтобы узнать, запущена или остановлена служба.
Чтобы перезапустить службу смарт-карт, выполните приведенные далее действия.
- Запуск от имени администратора в командной строке
- Если появится диалоговое окно Контроль учетных записей пользователей, убедитесь, что отображается нужное действие, и нажмите кнопку Да.
- В командной строке введите
net stop SCardSvr
- В командной строке введите
net start SCardSvr
В командной строке можно использовать следующую команду, чтобы проверка, запущена ли служба: sc queryex scardsvr
.
Следующий пример кода является примером выходных данных этой команды:
SERVICE_NAME: scardsvr
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 1320
FLAGS :
C:\>
Интеллектуальные средства чтения карта
Как и любое устройство, подключенное к компьютеру, диспетчер устройств можно использовать для просмотра свойств и начала процесса отладки.
Чтобы проверка, работает ли средство чтения интеллектуального карта:
- Перейдите к компьютеру
- Щелкните правой кнопкой мыши компьютер и выберите Пункт Свойства.
- В разделе Задачи выберите диспетчер устройств
- В диспетчер устройств разверните узел Средства чтения смарт-карта, выберите имя средства чтения смарт-карта, которое вы хотите проверка, а затем выберите Свойства.
Примечание.
Если средство чтения смарт-карта отсутствует в списке диспетчер устройств, в меню Действие выберите Пункт Проверить наличие изменений оборудования.
Диагностика CryptoAPI 2.0
Диагностика CryptoAPI 2.0 доступна в версиях Windows, которые поддерживают CryptoAPI 2.0 и могут помочь в устранении неполадок инфраструктуры открытых ключей (PKI).
Диагностика CryptoAPI 2.0 регистрирует события в журнале событий Windows. Журналы содержат подробные сведения о проверке цепочки сертификатов, операциях хранилища сертификатов и проверке подписи. Эти сведения упрощают выявление причин проблем и сокращают время, необходимое для диагностики.
Дополнительные сведения о диагностике CryptoAPI 2.0 см. в разделе Устранение неполадок с PKI предприятия.