Risoluzione dei problemi delle smart card
Questo articolo illustra gli strumenti e i servizi che gli sviluppatori di smart card possono usare per identificare i problemi relativi ai certificati con la distribuzione delle smart card.
Il debug e la traccia dei problemi delle smart card richiedono diversi strumenti e approcci. Le sezioni seguenti forniscono indicazioni sugli strumenti e sugli approcci che è possibile usare.
- Certutil
- Debug e traccia tramite il preprocessore di traccia software Windows (WPP)
- Protocollo Kerberos, KDC (Key Distribution Center) e debug e traccia NTLM
- Servizio smart card
- Lettori di smart card
- Diagnostica CryptoAPI 2.0
Certutil
Per una descrizione completa di Certutil che include esempi che illustrano come usarlo, vedere Certutil [W2012].
Elencare i certificati disponibili nella smart card
Per elencare i certificati disponibili nella smart card, digitare certutil.exe -scinfo
.
Nota
L'immissione di un PIN non è necessaria per questa operazione. Se viene richiesto un PIN, è possibile premere ESC.
Eliminare i certificati nella smart card
Ogni certificato è racchiuso in un contenitore. Quando si elimina un certificato nella smart card, si elimina il contenitore per il certificato.
Per trovare il valore del contenitore, digitare certutil.exe -scinfo
.
Per eliminare un contenitore, digitare certutil.exe -delkey -csp "Microsoft Base Smart Card Crypto Provider" "<ContainerValue>"
.
Debug e traccia tramite WPP
WPP semplifica la traccia del funzionamento del provider di traccia. Fornisce un meccanismo per consentire al provider di traccia di registrare messaggi binari in tempo reale. I messaggi registrati possono essere convertiti in una traccia leggibile dell'operazione. Per altre informazioni, vedere Diagnostica con WPP - Blog di NDIS.
Abilitare la traccia
Usando WPP, usare uno dei comandi seguenti per abilitare la traccia:
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>
È possibile usare i parametri nella tabella seguente.
Nome descrittivo | GUID | Flag |
---|---|---|
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 |
Esempi
Per abilitare la traccia per il servizio 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
Per abilitare la traccia per scfilter.sys
:
tracelog.exe -kd -rt -start scfilter -guid \#eed7f3c9-62ba-400e-a001-658869df9a91 -f .\scfilter.etl -flags 0xffff -ft 1
Arrestare la traccia
Usando WPP, usare uno dei comandi seguenti per arrestare la traccia:
tracelog.exe -stop <*FriendlyName*>
logman.exe -stop <*FriendlyName*> -ets
Ad esempio, per arrestare una traccia:
tracelog.exe -stop scardsvr
logman.exe -stop scardsvr -ets
Debug e traccia di protocollo Kerberos, KDC e NTLM
È possibile usare queste risorse per risolvere i problemi relativi a questi protocolli e al KDC:
- Suggerimenti per la risoluzione dei problemi relativi a Kerberos e LDAP
- Windows Driver Kit (WDK) e Strumenti di debug per Windows (WinDbg). È possibile usare lo strumento di log di traccia in questo SDK per eseguire il debug degli errori di autenticazione Kerberos.
Per iniziare la traccia, è possibile usare Tracelog
. I diversi componenti usano GUID di controllo diversi, come illustrato in questi esempi. Per altre informazioni, vedere Tracelog
NTLM
Per abilitare la traccia per l'autenticazione NTLM, eseguire il comando seguente nella riga di comando:
tracelog.exe -kd -rt -start ntlm -guid \#5BBB6C18-AA45-49b1-A15F-085F7ED0AA90 -f .\ntlm.etl -flags 0x15003 -ft 1
Per arrestare la traccia per l'autenticazione NTLM, eseguire questo comando:
tracelog -stop ntlm
Autenticazione Kerberos
Per abilitare la traccia per l'autenticazione Kerberos, eseguire questo comando:
tracelog.exe -kd -rt -start kerb -guid \#6B510852-3583-4e2d-AFFE-A67F9F223438 -f .\kerb.etl -flags 0x43 -ft 1
Per arrestare la traccia per l'autenticazione Kerberos, eseguire questo comando:
tracelog.exe -stop kerb
KDC
Per abilitare la traccia per il KDC, eseguire il comando seguente nella riga di comando:
tracelog.exe -kd -rt -start kdc -guid \#1BBA8B19-7F31-43c0-9643-6E911F79A06B -f .\kdc.etl -flags 0x803 -ft 1
Per arrestare la traccia per il KDC, eseguire il comando seguente nella riga di comando:
tracelog.exe -stop kdc
Per arrestare la traccia da un computer remoto, eseguire questo comando:
logman.exe -s <ComputerName>
Nota
Il percorso predefinito per logman.exe è %systemroot%system32. Usare l'opzione -s per specificare un nome di computer.
Configurare la traccia con il Registro di sistema
È anche possibile configurare la traccia modificando i valori del Registro di sistema Kerberos illustrati nella tabella seguente.
Elemento | Impostazione della chiave del Registro di sistema |
---|---|
NTLM | HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 Nome valore: NtLmInfoLevel Tipo di valore: DWORD Dati valore: c0015003 |
Kerberos | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos Nome valore: LogToFile Tipo di valore: DWORD Dati valore: 00000001 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters Nome valore: KerbDebugLevel Tipo di valore: DWORD Dati valore: c0000043 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters Nome valore: LogToFile Tipo di valore: DWORD Dati valore: 00000001 |
KDC | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc Nome valore: KdcDebugLevel Tipo di valore: DWORD Dati valore: c0000803 |
Se è stato usato Tracelog
, cercare il file di log seguente nella directory corrente: kerb.etl/kdc.etl/ntlm.etl
.
Se sono state usate le impostazioni della chiave del Registro di sistema visualizzate nella tabella precedente, cercare i file di log di traccia nei percorsi seguenti:
- NTLM:
%systemroot%\tracing\msv1_0
- Kerberos:
%systemroot%\tracing\kerberos
- KDC:
%systemroot%\tracing\kdcsvc
Per decodificare i file di traccia degli eventi, è possibile usare Tracefmt
(tracefmt.exe).
Tracefmt
è uno strumento da riga di comando che formatta e visualizza i messaggi di traccia da un file di log di traccia eventi (con estensione etl) o da una sessione di traccia in tempo reale.
Tracefmt
può visualizzare i messaggi nella finestra del prompt dei comandi o salvarli in un file di testo. Si trova nella sottodirectory \tools\tracing di Windows Driver Kit (WDK). Per altre informazioni, vedi Tracefmt
.
Servizio smart card
Il servizio gestione risorse smart card viene eseguito nel contesto di un servizio locale. Viene implementato come servizio condiviso del processo host dei servizi (svchost).
Per verificare se il servizio smart card è in esecuzione:
- Premere CTRL+ALT+CANC e quindi selezionare Avvia Gestione attività
- Nella finestra di dialogo Gestione attività Windows selezionare la scheda Servizi
- Selezionare la colonna Nome per ordinare l'elenco in ordine alfabetico, quindi digitare s
- Nella colonna Nome cercare SCardSvr e quindi cercare nella colonna Stato per verificare se il servizio è in esecuzione o arrestato
Per riavviare il servizio smart card:
- Eseguire come amministratore al prompt dei comandi
- Se viene visualizzata la finestra di dialogo Controllo account utente , verificare che l'azione visualizzata sia quella desiderata e quindi selezionare Sì
- Al prompt dei comandi digitare
net stop SCardSvr
- Al prompt dei comandi digitare
net start SCardSvr
È possibile usare il comando seguente al prompt dei comandi per verificare se il servizio è in esecuzione: sc queryex scardsvr
.
L'esempio di codice seguente è un output di esempio di questo 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:\>
Lettori di smart card
Come per qualsiasi dispositivo connesso a un computer, è possibile usare Gestione dispositivi per visualizzare le proprietà e avviare il processo di debug.
Per verificare se il lettore di smart card funziona:
- Passare a Computer
- Fare clic con il pulsante destro del mouse su Computer e quindi scegliere Proprietà
- In Attività selezionare Gestione dispositivi
- In Gestione dispositivi espandere Lettori smart card, selezionare il nome del lettore di smart card da controllare e quindi selezionare Proprietà
Nota
Se il lettore di smart card non è elencato in Gestione dispositivi, nel menu Azione selezionare Cerca modifiche hardware.
Diagnostica CryptoAPI 2.0
La diagnostica CryptoAPI 2.0 è disponibile nelle versioni di Windows che supportano CryptoAPI 2.0 e consentono di risolvere i problemi dell'infrastruttura a chiave pubblica (PKI).
La diagnostica CryptoAPI 2.0 registra gli eventi nel registro eventi di Windows. I log contengono informazioni dettagliate sulla convalida della catena di certificati, sulle operazioni dell'archivio certificati e sulla verifica della firma. Queste informazioni semplificano l'identificazione delle cause dei problemi e riducono il tempo necessario per la diagnosi.
Per altre informazioni sulla diagnostica CryptoAPI 2.0, vedere Risoluzione dei problemi di un'infrastruttura a chiave pubblica aziendale.