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 명령 프롬프트

기타 리소스

.NET Framework 도구

변경 기록

날짜

변경 내용

이유

2011년 4월

Visual Studio 및 Windows SDK 명령 프롬프트 사용에 대한 정보를 추가했습니다.

향상된 기능 관련 정보

2010년 5월

재구성하고 명령과 옵션을 업데이트하였습니다.

고객 의견