Share via


智慧卡疑難解答

本文說明智慧卡開發人員可用來協助識別智慧卡部署憑證問題的工具和服務。

偵錯和追蹤智慧卡問題需要各種工具和方法。 下列各節提供有關您可以使用的工具和方法的指引。

Certutil

如需 Certutil 的完整描述,包括示範如何使用它的範例,請參閱 Certutil [W2012]

列出智慧卡上可用的憑證

若要列出智慧卡上可用的憑證,請輸入 certutil.exe -scinfo

注意

此作業不需要輸入 PIN。 如果系統提示您輸入 PIN,您可以按 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 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

範例

若要啟用 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 進行疑難解答:

若要開始追蹤,您可以使用 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 可以在 [命令提示字元] 視窗中顯示訊息,或將它們儲存在文字檔中。 它位於 Windows 驅動程式套件 (WDK) 的 \tools\tracing 子目錄中。 如需詳細資訊,請參閱 Tracefmt

智慧卡服務

智慧卡資源管理員服務會在本地服務的內容中執行。 它會實作為服務主機 (svchost) 程式的共用服務。

若要檢查智慧卡服務是否正在執行:

  1. 按 CTRL+ALT+DEL,然後選取 [ 啟動任務管理器]
  2. 在 [ Windows 任務管理器 ] 對話框中,選取 [ 服務] 索引 標籤
  3. 選取 [名稱] 資料 行以依字母順序排序列表,然後輸入 s
  4. 在 [ 名稱] 資料 行中,尋找 SCardSvr,然後查看 [ 狀態 ] 資料行底下,以查看服務是否正在執行或停止

若要重新啟動智慧卡服務:

  1. 在命令提示字元中以系統管理員身分執行
  2. 如果 [ 用戶帳戶控制] 對話框出現,請確認其顯示的動作是您想要的動作,然後選取 [ 是]
  3. 在命令提示字元中輸入 net stop SCardSvr
  4. 在命令提示字元中輸入 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:\>

智慧卡卡片閱讀機

如同任何連線到電腦的裝置,裝置管理員 可用來檢視屬性並開始偵錯程式。

若要檢查智慧卡卡片閱讀機是否正常運作:

  1. 瀏覽至 電腦
  2. 以滑鼠右鍵按兩下 [計算機],然後選取 [ 屬性]
  3. 在 [工作] 底下,選取 [裝置管理員
  4. 在 [裝置管理員] 中,展開 [智慧卡卡片閱讀機],選取您要檢查的智慧卡卡片閱讀機名稱,然後選取 [屬性]

注意

如果智慧卡卡片讀取器未列在 裝置管理員 中,請在 [動作] 功能表中,選取 [掃描硬體變更]

CryptoAPI 2.0 診斷

CryptoAPI 2.0 診斷適用於支援 CryptoAPI 2.0 的 Windows 版本,可協助您針對公鑰基礎結構 (PKI) 問題進行疑難解答。

CryptoAPI 2.0 診斷會記錄 Windows 事件記錄檔中的事件。 記錄包含憑證鏈結驗證、證書存儲作業和簽章驗證的詳細資訊。 此資訊可讓您更輕鬆地識別問題的原因,並減少診斷所需的時間。

如需 CryptoAPI 2.0 診斷的詳細資訊,請參閱 針對企業 PKI 進行疑難解答

請參閱

智慧卡技術參考