Problembehandlung bei Smartcards

In diesem Artikel werden Tools und Dienste erläutert, die Entwickler von intelligenten Karte verwenden können, um Zertifikatprobleme bei der Bereitstellung der intelligenten Karte zu identifizieren.

Das Debuggen und Nachverfolgen von Problemen mit intelligenten Karte erfordert eine Vielzahl von Tools und Ansätzen. Die folgenden Abschnitte enthalten Anleitungen zu Tools und Ansätzen, die Sie verwenden können.

Certutil

Eine vollständige Beschreibung von Certutil einschließlich Beispielen zur Verwendung finden Sie unter Certutil [W2012].

Auflisten von Zertifikaten, die im smarten Karte

Geben Sie zum Auflisten von Zertifikaten, die auf dem smarten Karte verfügbar sind, eincertutil.exe -scinfo.

Hinweis

Die Eingabe einer PIN ist für diesen Vorgang nicht erforderlich. Sie können ESC drücken, wenn Sie zur Eingabe einer PIN aufgefordert werden.

Löschen von Zertifikaten auf der intelligenten Karte

Jedes Zertifikat ist in einem Container eingeschlossen. Wenn Sie ein Zertifikat auf der intelligenten Karte löschen, löschen Sie den Container für das Zertifikat.

Um den Containerwert zu ermitteln, geben Sie ein certutil.exe -scinfo.

Um einen Container zu löschen, geben Sie ein certutil.exe -delkey -csp "Microsoft Base Smart Card Crypto Provider" "<ContainerValue>".

Debuggen und Ablaufverfolgung mit WPP

WPP vereinfacht die Ablaufverfolgung des Ablaufverfolgungsanbieters. Es bietet einen Mechanismus für den Ablaufverfolgungsanbieter zum Protokollieren binärer Echtzeitnachrichten. Protokollierte Nachrichten können in eine lesbare Ablaufverfolgung des Vorgangs konvertiert werden. Weitere Informationen finden Sie unter Diagnose mit WPP – Der NDIS-Blog.

Aktivieren der Ablaufverfolgung

Verwenden Sie mithilfe von WPP einen der folgenden Befehle, um die Ablaufverfolgung zu aktivieren:

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>

Sie können die Parameter in der folgenden Tabelle verwenden.

Anzeigename 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

Beispiele

So aktivieren Sie die Ablaufverfolgung für den SCardSvr-Dienst:

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

So aktivieren Sie die Ablaufverfolgung für scfilter.sys:

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

Beenden der Ablaufverfolgung

Verwenden Sie mithilfe von WPP einen der folgenden Befehle, um die Ablaufverfolgung zu beenden:

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

So beenden Sie beispielsweise eine Ablaufverfolgung:

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

Kerberos-Protokoll, KDC und NTLM-Debugging und -Ablaufverfolgung

Sie können diese Ressourcen verwenden, um Probleme mit diesen Protokollen und dem KDC zu beheben:

Um mit der Ablaufverfolgung zu beginnen, können Sie verwenden Tracelog. Unterschiedliche Komponenten verwenden unterschiedliche Steuerelement-GUIDs, wie in diesen Beispielen erläutert. Weitere Informationen finden Sie unter Tracelog

NTLM

Führen Sie den folgenden Befehl in der Befehlszeile aus, um die Ablaufverfolgung für die NTLM-Authentifizierung zu aktivieren:

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

Führen Sie den folgenden Befehl aus, um die Ablaufverfolgung für die NTLM-Authentifizierung zu beenden:

tracelog -stop ntlm

Kerberos-Authentifizierung

Führen Sie den folgenden Befehl aus, um die Ablaufverfolgung für die Kerberos-Authentifizierung zu aktivieren:

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

Führen Sie den folgenden Befehl aus, um die Ablaufverfolgung für die Kerberos-Authentifizierung zu beenden:

tracelog.exe -stop kerb

KDC

Führen Sie den folgenden Befehl in der Befehlszeile aus, um die Ablaufverfolgung für das KDC zu aktivieren:

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

Führen Sie den folgenden Befehl in der Befehlszeile aus, um die Ablaufverfolgung für das KDC zu beenden:

tracelog.exe -stop kdc

Führen Sie den folgenden Befehl aus, um die Ablaufverfolgung von einem Remotecomputer aus zu beenden:

logman.exe -s <ComputerName>

Hinweis

Der Standardspeicherort für logman.exe ist %systemroot%system32. Verwenden Sie die Option -s , um einen Computernamen anzugeben.

Konfigurieren der Ablaufverfolgung mit der Registrierung

Sie können die Ablaufverfolgung auch konfigurieren, indem Sie die in der folgenden Tabelle aufgeführten Kerberos-Registrierungswerte bearbeiten.

Element Registrierungsschlüsseleinstellung
NTLM HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
Wertname: NtLmInfoLevel
Werttyp: DWORD
Wertdaten: c0015003
Kerberos HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos
Wertname: LogToFile
Werttyp: DWORD
Wertdaten: 00000001

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Wertname: KerbDebugLevel
Werttyp: DWORD
Wertdaten: c0000043

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Wertname: LogToFile
Werttyp: DWORD
Wertdaten: 00000001
KDC HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
Wertname: KdcDebugLevel
Werttyp: DWORD
Wertdaten: c0000803

Wenn Sie verwendet haben Tracelog, suchen Sie in Ihrem aktuellen Verzeichnis nach der folgenden Protokolldatei: kerb.etl/kdc.etl/ntlm.etl.

Wenn Sie die in der vorherigen Tabelle gezeigten Registrierungsschlüsseleinstellungen verwendet haben, suchen Sie an den folgenden Speicherorten nach den Protokolldateien der Ablaufverfolgung:

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

Zum Decodieren von Ereignisablaufverfolgungsdateien können Sie (tracefmt.exe) verwenden Tracefmt . Tracefmt ist ein Befehlszeilentool, das Ablaufverfolgungsmeldungen aus einer Ereignisablaufverfolgungsprotokolldatei (ETL) oder einer Echtzeitablaufverfolgungssitzung formatiert und anzeigt. Tracefmt kann die Meldungen im Eingabeaufforderungsfenster anzeigen oder in einer Textdatei speichern. Es befindet sich im Unterverzeichnis \tools\tracing des Windows Driver Kit (WDK). Weitere Informationen finden Sie unter Tracefmt.

Smartcard-Dienst

Der Smart Karte Resource Manager-Dienst wird im Kontext eines lokalen Diensts ausgeführt. Es wird als gemeinsamer Dienst des Diensthostprozesses (svchost) implementiert.

So überprüfen Sie, ob der Smartcarddienst ausgeführt wird:

  1. Drücken Sie STRG+ALT+ENTF, und wählen Sie dann Task-Manager starten aus.
  2. Wählen Sie im Dialogfeld Windows Task-Manager die Registerkarte Dienste aus.
  3. Wählen Sie die Spalte Name aus, um die Liste alphabetisch zu sortieren, und geben Sie dann s ein.
  4. Suchen Sie in der Spalte Name nach SCardSvr, und suchen Sie dann unter der Spalte Status , ob der Dienst ausgeführt oder beendet wird.

So starten Sie den Smartcarddienst neu:

  1. Ausführen als Administrator an der Eingabeaufforderung
  2. Wenn das Dialogfeld Benutzerkontensteuerung angezeigt wird, vergewissern Sie sich, dass die angezeigte Aktion ihren Wünschen entspricht, und wählen Sie dann Ja aus.
  3. Geben Sie an der Eingabeaufforderung folgendes Eingabeaufforderung ein: net stop SCardSvr
  4. Geben Sie an der Eingabeaufforderung folgendes Eingabeaufforderung ein: net start SCardSvr

Sie können den folgenden Befehl an der Eingabeaufforderung verwenden, um zu überprüfen, ob der Dienst ausgeführt wird: sc queryex scardsvr.

Das folgende Codebeispiel ist eine Beispielausgabe dieses Befehls:

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

Intelligente Karte-Leser

Wie bei jedem Gerät, das mit einem Computer verbunden ist, können Geräte-Manager verwendet werden, um Eigenschaften anzuzeigen und den Debugprozess zu starten.

So überprüfen Sie, ob smart Karte Reader funktioniert:

  1. Navigieren Sie zu Computer.
  2. Klicken Sie mit der rechten Maustaste auf Computer, und wählen Sie dann Eigenschaften aus.
  3. Wählen Sie unter Aufgabendie Option Geräte-Manager
  4. Erweitern Sie in Geräte-Manager die Option Smart Karte Reader, wählen Sie den Namen des zu überprüfenden Smart Karte-Readers aus, und wählen Sie dann Eigenschaften aus.

Hinweis

Wenn der Smart Karte Reader nicht in Geräte-Manager aufgeführt ist, wählen Sie im Menü Aktion die Option Nach Hardwareänderungen suchen aus.

CryptoAPI 2.0-Diagnose

Die CryptoAPI 2.0-Diagnose ist in Windows-Versionen verfügbar, die CryptoAPI 2.0 unterstützen, und kann Ihnen bei der Behandlung von Problemen mit der Public Key-Infrastruktur (PKI) helfen.

Die CryptoAPI 2.0-Diagnose protokolliert Ereignisse im Windows-Ereignisprotokoll. Die Protokolle enthalten ausführliche Informationen zur Zertifikatkettenvalidierung, Zertifikatspeichervorgängen und Signaturüberprüfung. Diese Informationen erleichtern die Identifizierung der Ursachen von Problemen und verkürzen den Zeitaufwand für die Diagnose.

Weitere Informationen zur CryptoAPI 2.0-Diagnose finden Sie unter Problembehandlung für eine Unternehmens-PKI.

Weitere Informationen

Technische Referenz zu Smartcards