다음을 통해 공유


스마트 카드 문제 해결

이 문서에서는 스마트 카드 개발자가 스마트 카드 배포와 관련된 인증서 문제를 식별하는 데 사용할 수 있는 도구 및 서비스에 대해 설명합니다.

스마트 카드 문제를 디버깅하고 추적하려면 다양한 도구와 접근 방식이 필요합니다. 다음 섹션에서는 사용할 수 있는 도구 및 접근 방식에 대한 지침을 제공합니다.

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.exe)를 사용할 Tracefmt 수 있습니다. Tracefmt 는 이벤트 추적 로그 파일(.etl) 또는 실시간 추적 세션의 추적 메시지를 포맷하고 표시하는 명령줄 도구입니다. Tracefmt 명령 프롬프트 창에 메시지를 표시하거나 텍스트 파일에 저장할 수 있습니다. WDK(Windows 드라이버 키트)의 \tools\tracing 하위 디렉터리에 있습니다. 자세한 내용은 Tracefmt을 참조하세요.

스마트 카드 서비스

스마트 카드 리소스 관리자 서비스는 로컬 서비스의 컨텍스트에서 실행됩니다. 서비스 호스트(svchost) 프로세스의 공유 서비스로 구현됩니다.

스마트 카드 서비스가 실행 중인지 검사 하려면 다음을 수행합니다.

  1. Ctrl+Alt+DEL을 누른 다음, 작업 관리자 시작을 선택합니다.
  2. Windows 작업 관리자 대화 상자에서 서비스 탭을 선택합니다.
  3. 이름 열을 선택하여 목록을 사전순으로 정렬한 다음, 를 입력합니다.
  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 진단에 대한 자세한 내용은 Enterprise PKI 문제 해결을 참조하세요.

참고 항목

스마트 카드 기술 참조