SignTool.exe(서명 도구)
업데이트: 2011년 4월
서명 도구는 파일에 디지털 서명을 하고, 파일의 서명을 확인하고, 파일에 타임스탬프를 기록하는 명령줄 도구입니다.
이 도구는 Visual Studio 및 Windows SDK와 함께 자동으로 설치됩니다. 도구를 실행하려면 Visual Studio 명령 프롬프트 또는 Windows SDK 명령 프롬프트(CMD 셸)를 사용하는 것이 좋습니다. 이러한 유틸리티를 사용하면 설치 폴더를 탐색하지 않고도 도구를 쉽게 실행할 수 있습니다. 자세한 내용은 Visual Studio 및 Windows SDK 명령 프롬프트을 참조하십시오.
컴퓨터에 Visual Studio를 설치한 경우 작업 표시줄에서 Start, All Programs, Visual Studio, Visual Studio Tools 및 Visual Studio Command Prompt를 차례로 클릭합니다.
또는
컴퓨터에 Windows SDK를 설치한 경우 작업 표시줄에서 Start, All Programs 및 Windows SDK의 폴더를 차례로 클릭한 다음 Command Prompt(또는 CMD Shell)를 클릭합니다.
명령 프롬프트에 다음과 같이 입력합니다.
signtool [command] [options] [file_name | ...]
매개 변수
인수 |
설명 |
---|---|
command |
파일에서 수행할 작업을 지정하는 (catdb, sign, Timestamp 또는 Verify) 명령 4개 중 하나입니다. 각 명령의 설명에 대해서는 다음 표를 참조하십시오. |
options |
명령을 수정하는 옵션입니다. 글로벌 /q 및 /v 옵션 이외에도 각 명령은 고유한 옵션 집합을 지원합니다. |
file_name |
서명할 파일 경로입니다. |
다음은 서명 도구에서 지원되는 명령입니다. 각 명령은 각 섹션에 나열된 옵션의 고유 집합과 함께 사용됩니다.
명령 |
설명 |
---|---|
catdb |
카탈로그 데이터베이스에서 카탈로그 파일을 추가하거나 제거합니다. 카탈로그 데이터베이스는 카탈로그 파일의 자동 조회에 사용되며 GUID를 통해 식별됩니다. catdb 명령에서 지원하는 옵션 목록은 catdb 명령 옵션을 참조하십시오. |
sign |
파일에 디지털 서명을 수행합니다. 디지털 서명은 파일 조작으로부터 보호하고 사용자가 서명 인증서를 기반으로 서명자를 확인할 수 있습니다. sign 명령에서 지원하는 옵션 목록은 sign 명령 옵션을 참조하십시오. |
Timestamp |
파일에 타임스탬프를 기록합니다. TimeStamp 명령에서 지원하는 옵션 목록은 TimeStamp 명령줄 옵션을 참조하십시오. |
Verify |
파일의 디지털 서명을 검사하여 신뢰할 수 있는 기관에서 발행한 서명 인증서인지, 해당 서명 인증서가 취소되었는지, 아니면 서명 인증서가 특정 정책에 대해 유효한지를 선택적으로 확인합니다. Verify 명령에서 지원하는 옵션 목록은 명령 옵션 확인을 참조하십시오. |
다음 옵션은 모든 서명 도구 명령에 적용됩니다.
전역 옵션 |
설명 |
---|---|
/q |
성공한 실행에 대해서는 출력하지 않고 실패한 실행에 대해서만 최소 출력합니다. |
/v |
성공한 실행, 실패한 실행 및 경고 메시지에 대해 자세히 출력합니다. |
catdb 명령 옵션
다음 표에는 catdb 명령에 사용할 수 있는 옵션이 나열되어 있습니다.
Catdb 옵션 |
설명 |
---|---|
/d |
기본 카탈로그 데이터베이스가 업데이트되도록 지정합니다. /d와 /g 옵션을 모두 사용하지 않을 경우 서명 도구에서 시스템 구성 요소와 드라이버 데이터베이스를 업데이트합니다. |
/g GUID |
고유한 전역 식별자(GUID)로 식별되는 카탈로그 데이터베이스가 업데이트되도록 지정합니다. |
/r |
지정된 카탈로그를 카탈로그 데이터베이스에서 제거합니다. 이 옵션을 지정하지 않으면 서명 도구는 지정된 카탈로그를 카탈로그 데이터베이스에 추가합니다. |
/u |
추가된 카탈로그 파일에 대해 고유한 이름이 자동으로 생성되도록 지정합니다. 필요한 경우 기존 카탈로그 파일과의 이름 충돌을 방지하기 위해 카탈로그 파일의 이름을 바꿉니다. 이 옵션을 지정하지 않으면 서명 도구는 추가하려는 카탈로그와 같은 이름의 기존 카탈로그를 덮어씁니다. |
sign 명령 옵션
다음 표에는 sign 명령에 사용할 수 있는 옵션이 나열되어 있습니다.
Sign 명령 옵션 |
설명 |
---|---|
/a |
가장 적합한 서명 인증서를 자동으로 선택합니다. 서명 도구는 지정한 모든 조건을 만족하는 유효한 모든 인증서를 찾아서 최대 시간 동안 유효한 인증서를 선택합니다. 이 옵션이 없으면 서명 도구는 유효한 서명 인증서를 하나만 찾게 됩니다. |
/ac 파일 |
파일의 추가 인증서를 서명 블록에 추가합니다. |
/c CertTemplateName |
서명 인증서의 인증서 템플릿 이름(Microsoft 확장)을 지정합니다. |
/csp CSPName |
개인 키 컨테이너를 포함하는 CSP(암호화 서비스 공급자)를 지정합니다. |
/d Desc |
서명된 콘텐츠에 대한 설명을 지정합니다. |
/du URL |
서명한 콘텐츠의 부연 설명에 대한 URL(Uniform Resource Locator)을 지정합니다. |
/f SignCertFile |
파일에 있는 서명 인증서를 지정합니다. 파일이 PFX(개인 정보 교환) 형식이면서 암호로 보호되는 경우, /p 옵션을 사용하여 암호를 지정합니다. 파일에 개인 키가 없으면 /csp 및 /k 옵션을 사용하여 CSP 및 개인 키 컨테이너 이름을 지정합니다. |
/fd |
파일 서명을 만드는 데 사용할 파일 다이제스트 알고리즘을 지정합니다. 기본값은 SHA1입니다. |
/i IssuerName |
서명 인증서의 발급자 이름을 지정합니다. 이 값은 발급자의 전체 이름에서 부분 문자열이 될 수 있습니다. |
/kc PrivKeyContainerName |
개인 키 컨테이너 이름을 지정합니다. |
/n SubjectName |
서명 인증서의 주체 이름을 지정합니다. 이 값은 주체의 전체 이름에서 부분 문자열이 될 수 있습니다. |
/nph |
지원되는 경우 실행 파일에 대한 페이지 해시를 억제합니다. 기본값은 SIGNTOOL_PAGE_HASHES 환경 변수 및 wintrust.dll 버전에 의해 결정됩니다. |
/p Password |
PFX 파일을 열 때 사용할 암호를 지정합니다. (/f 옵션을 사용하여 PFX 파일을 지정합니다.) |
/ph |
지원되지 않는 경우 실행 파일에 대한 페이지 해시를 생성합니다. |
/r RootSubjectName |
서명 인증서와 연결해야 하는 루트 인증서의 주체 이름을 지정합니다. 이 값은 루트 인증서 주체의 전체 이름에서 부분 문자열이 될 수 있습니다. |
/s StoreName |
인증서를 검색할 때 열 저장소를 지정합니다. 이 옵션을 지정하지 않으면 My 저장소가 열립니다. |
/sha1 Hash |
서명 인증서의 SHA1 해시를 지정합니다. |
/sm |
사용자 저장소 대신 컴퓨터 저장소가 사용되도록 지정합니다. |
/t URL |
타임스탬프 서버의 URL을 지정합니다. 이 옵션(또는 /tr)이 없으면 서명 파일에 타임스탬프가 기록되지 않습니다. 타임스탬프 기록에 실패하면 경고가 생성됩니다. 이 옵션은 /tr 옵션과 함께 사용할 수 없습니다. |
/td alg |
/tr 옵션을 사용하여 RFC 3161 타임스탬프 서버에서 사용하는 다이제스트 알고리즘을 요청합니다. |
/tr URL |
RFC 3161 타임스탬프 서버의 URL을 지정합니다. 이 옵션(또는 /t)이 없으면 서명 파일에 타임스탬프가 기록되지 않습니다. 타임스탬프 기록에 실패하면 경고가 생성됩니다. 이 옵션은 /t 옵션과 함께 사용할 수 없습니다. |
/u 용도 |
EKU(확장된 키 사용)가 서명 인증서에 있도록 지정합니다. 용도 값은 OID 또는 문자열로 지정될 수 있습니다. 기본 용도는 "코드 서명"(1.3.6.1.5.5.7.3.3)입니다. |
/uw |
"Windows 시스템 구성 요소 확인"의 사용을 지정합니다(1.3.6.1.4.1.311.10.3.6). |
TimeStamp 명령줄 옵션
다음 표에는 TimeStamp 명령에 사용할 수 있는 옵션이 나열되어 있습니다.
TimeStamp 옵션 |
설명 |
---|---|
/t URL |
타임스탬프 서버의 URL을 지정합니다. 타임스탬프가 기록되는 파일은 이전에 서명되었어야 합니다. /t 또는 /tr 옵션이 필요합니다. |
/td alg |
RFC 3161 타임 스탬프 서버에서 사용하는 다이제스트 알고리즘을 요청합니다. /td는 /tr 옵션과 함께 사용됩니다. |
/tr URL |
RFC 3161 타임스탬프 서버의 URL을 지정합니다. 타임스탬프가 기록되는 파일은 이전에 서명되었어야 합니다. /tr 또는 /t 옵션이 필요합니다. |
명령 옵션 확인
옵션 확인 |
설명 |
---|---|
/a |
모든 메서드를 사용하여 파일 확인을 할 수 있도록 지정합니다. 먼저 카탈로그 데이터베이스를 검색하여 카탈로그에서 파일이 서명되었는지 여부를 확인합니다. 어떤 카탈로그에서도 파일이 서명되지 않은 경우에는 서명 도구에서 파일에 포함된 서명을 확인하려고 합니다. 이 옵션은 카탈로그에서 서명되거나 서명되지 않은 파일을 확인할 때 권장됩니다. 이러한 파일의 예로는 Windows 파일 또는 드라이버가 있습니다. |
/ad |
기본 카탈로그 데이터베이스를 사용하여 카탈로그를 찾습니다. |
/as |
시스템 구성 요소(드라이버) 카탈로그 데이터베이스를 사용하여 해당 카탈로그를 찾습니다. |
/ag CatDBGUID |
카탈로그 데이터베이스에서 CatDBGUID로 식별되는 카탈로그를 찾습니다. |
/c CatFile |
이름별로 카탈로그 파일을 지정합니다. |
/d |
서명 도구가 설명과 설명 URL을 인쇄하도록 지정합니다. |
/kp |
커널 모드 드라이버 서명 정책을 이용하여 검증을 수행하도록 지정합니다. |
/o 버전 |
운영 체제 버전별로 파일을 확인합니다. 버전의 형식은 다음과 같습니다: PlatformID:VerMajor.VerMinor.BuildNumber |
/pa |
기본 인증 확인 정책이 사용되도록 지정합니다. /pa 옵션을 지정하지 않으면 서명 도구는 Windows 드라이버 확인 정책을 사용합니다. 이 옵션은 catdb 옵션과 함께 사용할 수 없습니다. |
/pg PolicyGUID |
GUID를 기준으로 확인 정책을 지정합니다. PolicyGUID는 확인 정책의 ActionID와 일치합니다. 이 옵션은 catdb 옵션과 함께 사용할 수 없습니다. |
/ph |
서명 도구가 페이지 해시 값을 인쇄 및 확인하도록 지정합니다. |
/r RootSubjectName |
서명 인증서와 연결해야 하는 루트 인증서의 주체 이름을 지정합니다. 이 값은 루트 인증서 주체의 전체 이름에서 부분 문자열이 될 수 있습니다. |
/tw |
서명에 타임스탬프가 기록되지 않으면 경고가 생성되도록 지정합니다. |
반환 값
서명 도구는 종료할 때 다음 종료 코드 중 하나를 반환합니다.
종료 코드 |
설명 |
---|---|
0 |
실행이 완료되었습니다. |
1 |
실행하지 못했습니다. |
2 |
실행이 경고와 함께 완료되었습니다. |
예제
다음 명령은 카탈로그 파일 MyCatalogFileName.cat를 시스템 구성 요소와 드라이버 데이터베이스에 추가합니다. /v 옵션은 MyCatalogFileName.cat(이)라는 기존 카탈로그 파일이 바뀌지 않도록 해야 하는 경우 고유 이름을 생성합니다.
signtool catdb /v /u MyCatalogFileName.cat
다음 명령은 가장 적합한 인증서를 사용하여 파일에 자동으로 서명합니다.
signtool sign /a MyFile.exe
다음 명령을 암호로 보호된 PFX 파일에 저장된 인증서를 사용하여 파일에 디지털 서명을 합니다.
signtool sign /f MyCert.pfx /p MyPassword MyFile.exe
다음 명령은 파일에 디지털 서명을 하고 타임스탬프를 기록합니다. 파일에 서명하는 데 사용할 인증서는 PFX 파일로 저장됩니다.
signtool sign /f MyCert.pfx /t http://timestamp.verisgn/com/scripts.timstamp.dll MyFile.exe
다음 명령은 My Company Certificate의 제목 이름이 있는 My 저장소에 위치한 인증서를 통해 파일에 서명합니다.
signtool sign /n "My Company Certificate" MyFile.exe
다음 명령은 ActiveX 컨트롤에 서명하고 컨트롤을 설치하도록 사용자에게 메시지가 표시될 때 Internet Explorer에 표시되는 정보를 제공합니다.
Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html MyControl.exe
다음 명령은 이미 디지털 서명된 파일에 타임스탬프를 기록합니다.
signtool timestamp /t http://timestamp.verisgn/com/scripts.timstamp.dll MyFile.exe
다음 명령은 파일이 서명되었는지를 확인합니다.
signtool verify MyFile.exe
다음 명령은 카탈로그에서 서명될 수 있는 시스템 파일을 확인합니다.
signtool verify /a SystemFile.dll
다음 명령은 MyCatalog.cat라는 카탈로그에서 서명된 시스템 파일을 확인합니다.
signtool verify /c MyCatalog.cat SystemFile.dll
참고 항목
참조
Visual Studio 및 Windows SDK 명령 프롬프트
기타 리소스
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2011년 4월 |
Visual Studio 및 Windows SDK 명령 프롬프트 사용에 대한 정보를 추가했습니다. |
향상된 기능 관련 정보 |
2010년 5월 |
재구성하고 명령과 옵션을 업데이트하였습니다. |
고객 의견 |