Solución de problemas de tarjetas inteligentes

En este artículo se explican las herramientas y servicios que los desarrolladores de tarjetas inteligentes pueden usar para ayudar a identificar problemas de certificado con la implementación de tarjetas inteligentes.

La depuración y el seguimiento de problemas de tarjetas inteligentes requiere una variedad de herramientas y enfoques. En las secciones siguientes se proporcionan instrucciones sobre las herramientas y los enfoques que puede usar.

Certutil

Para obtener una descripción completa de Certutil, incluidos ejemplos que muestran cómo usarlo, vea Certutil [W2012].

Enumerar los certificados disponibles en la tarjeta inteligente

Para enumerar los certificados que están disponibles en la tarjeta inteligente, escriba certutil.exe -scinfo.

Nota

No es necesario escribir un PIN para esta operación. Puede presionar ESC si se le pide un PIN.

Eliminación de certificados en la tarjeta inteligente

Cada certificado se incluye en un contenedor. Al eliminar un certificado en la tarjeta inteligente, se elimina el contenedor del certificado.

Para buscar el valor del contenedor, escriba certutil.exe -scinfo.

Para eliminar un contenedor, escriba certutil.exe -delkey -csp "Microsoft Base Smart Card Crypto Provider" "<ContainerValue>".

Depuración y seguimiento mediante WPP

WPP simplifica el seguimiento del funcionamiento del proveedor de seguimiento. Proporciona un mecanismo para que el proveedor de seguimiento registre mensajes binarios en tiempo real. Los mensajes registrados se pueden convertir en un seguimiento legible de la operación. Para obtener más información, vea Diagnóstico con WPP: blog de NDIS.

Habilitación del seguimiento

Con WPP, use uno de los siguientes comandos para habilitar el seguimiento:

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>

Puede usar los parámetros de la tabla siguiente.

Nombre descriptivo GUID Flags
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 dba0e0e0-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

Ejemplos

Para habilitar el seguimiento del servicio 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

Para habilitar el seguimiento de scfilter.sys:

tracelog.exe -kd -rt -start scfilter -guid \#eed7f3c9-62ba-400e-a001-658869df9a91 -f .\scfilter.etl -flags 0xffff -ft 1

Detener el seguimiento

Con WPP, use uno de los siguientes comandos para detener el seguimiento:

tracelog.exe -stop <*FriendlyName*>
logman.exe -stop <*FriendlyName*> -ets

Por ejemplo, para detener un seguimiento:

tracelog.exe -stop scardsvr
logman.exe -stop scardsvr -ets

Depuración y seguimiento del protocolo Kerberos, KDC y NTLM

Puede usar estos recursos para solucionar problemas de estos protocolos y el KDC:

Para comenzar el seguimiento, puede usar Tracelog. Los distintos componentes usan GUID de control diferentes, como se explica en estos ejemplos. Para obtener más información, consulte Tracelog

NTLM

Para habilitar el seguimiento para la autenticación NTLM, ejecute el siguiente comando en la línea de comandos:

tracelog.exe -kd -rt -start ntlm -guid \#5BBB6C18-AA45-49b1-A15F-085F7ED0AA90 -f .\ntlm.etl -flags 0x15003 -ft 1

Para detener el seguimiento de la autenticación NTLM, ejecute este comando:

tracelog -stop ntlm

Autenticación Kerberos

Para habilitar el seguimiento para la autenticación Kerberos, ejecute este comando:

tracelog.exe -kd -rt -start kerb -guid \#6B510852-3583-4e2d-AFFE-A67F9F223438 -f .\kerb.etl -flags 0x43 -ft 1

Para detener el seguimiento de la autenticación Kerberos, ejecute este comando:

tracelog.exe -stop kerb

KDC

Para habilitar el seguimiento del KDC, ejecute el siguiente comando en la línea de comandos:

tracelog.exe -kd -rt -start kdc -guid \#1BBA8B19-7F31-43c0-9643-6E911F79A06B -f .\kdc.etl -flags 0x803 -ft 1

Para detener el seguimiento del KDC, ejecute el siguiente comando en la línea de comandos:

tracelog.exe -stop kdc

Para detener el seguimiento desde un equipo remoto, ejecute este comando:

logman.exe -s <ComputerName>

Nota

La ubicación predeterminada para logman.exe es %systemroot%system32. Use la opción -s para proporcionar un nombre de equipo.

Configuración del seguimiento con el Registro

También puede configurar el seguimiento editando los valores del Registro Kerberos que se muestran en la tabla siguiente.

Elemento Configuración de clave del Registro
NTLM HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
Nombre del valor: NtLmInfoLevel
Tipo de valor: DWORD
Datos de valor: c0015003
Kerberos HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos
Nombre del valor: LogToFile
Tipo de valor: DWORD
Datos de valor: 00000001

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Nombre del valor: KerbDebugLevel
Tipo de valor: DWORD
Datos de valor: c0000043

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Nombre del valor: LogToFile
Tipo de valor: DWORD
Datos de valor: 00000001
KDC HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
Nombre del valor: KdcDebugLevel
Tipo de valor: DWORD
Datos de valor: c0000803

Si usó Tracelog, busque el siguiente archivo de registro en el directorio actual: kerb.etl/kdc.etl/ntlm.etl.

Si usó la configuración de clave del Registro que se muestra en la tabla anterior, busque los archivos de registro de seguimiento en las siguientes ubicaciones:

  • NTLM: %systemroot%\tracing\msv1_0
  • Kerberos: %systemroot%\tracing\kerberos
  • KDC: %systemroot%\tracing\kdcsvc

Para descodificar archivos de seguimiento de eventos, puede usar Tracefmt (tracefmt.exe). Tracefmt es una herramienta de línea de comandos que da formato y muestra mensajes de seguimiento desde un archivo de registro de seguimiento de eventos (.etl) o una sesión de seguimiento en tiempo real. Tracefmt puede mostrar los mensajes en la ventana del símbolo del sistema o guardarlos en un archivo de texto. Se encuentra en el subdirectorio \tools\tracing del Kit de controladores de Windows (WDK). Para obtener más información, consulte Tracefmt.

Servicio de tarjeta inteligente

El servicio del administrador de recursos de tarjeta inteligente se ejecuta en el contexto de un servicio local. Se implementa como un servicio compartido del proceso de host de servicios (svchost).

Para comprobar si se está ejecutando el servicio de tarjeta inteligente:

  1. Presione CTRL+ALT+SUPR y, a continuación, seleccione Iniciar administrador de tareas.
  2. En el cuadro de diálogo Administrador de tareas de Windows , seleccione la pestaña Servicios .
  3. Seleccione la columna Nombre para ordenar la lista alfabéticamente y, a continuación, escriba s
  4. En la columna Nombre , busque SCardSvr y, a continuación, busque en la columna Estado para ver si el servicio se está ejecutando o detenido.

Para reiniciar el servicio de tarjeta inteligente:

  1. Ejecución como administrador en el símbolo del sistema
  2. Si aparece el cuadro de diálogo Control de cuentas de usuario, confirme que la acción que muestra es la que quiere y, a continuación, seleccione .
  3. En el símbolo del sistema, escriba net stop SCardSvr
  4. En el símbolo del sistema, escriba net start SCardSvr

Puede usar el siguiente comando en el símbolo del sistema para comprobar si el servicio se está ejecutando: sc queryex scardsvr.

El ejemplo de código siguiente es una salida de ejemplo de este comando:

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:\>

Lectores de tarjetas inteligentes

Al igual que con cualquier dispositivo conectado a un equipo, se pueden usar Administrador de dispositivos para ver las propiedades y comenzar el proceso de depuración.

Para comprobar si el lector de tarjetas inteligentes funciona:

  1. Vaya al equipo
  2. Haga clic con el botón derecho en Equipo y, a continuación, seleccione Propiedades.
  3. En Tareas, seleccione Administrador de dispositivos
  4. En Administrador de dispositivos, expanda Lectores de tarjetas inteligentes, seleccione el nombre del lector de tarjetas inteligentes que desea comprobar y, a continuación, seleccione Propiedades.

Nota

Si el lector de tarjetas inteligentes no aparece en Administrador de dispositivos, en el menú Acción, seleccione Buscar cambios de hardware.

Diagnósticos de CryptoAPI 2.0

CryptoAPI 2.0 Diagnostics está disponible en versiones de Windows que admiten CryptoAPI 2.0 y pueden ayudarle a solucionar problemas de infraestructura de clave pública (PKI).

CryptoAPI 2.0 Diagnostics registra eventos en el registro de eventos de Windows. Los registros contienen información detallada sobre la validación de la cadena de certificados, las operaciones del almacén de certificados y la comprobación de firmas. Esta información facilita la identificación de las causas de los problemas y reduce el tiempo necesario para el diagnóstico.

Para obtener más información sobre los diagnósticos de CryptoAPI 2.0, consulte Solución de problemas de una PKI empresarial.

Ver también

Referencia técnica de tarjeta inteligente