다음을 통해 공유


SignTool

SignTool(Signtool.exe)은 파일에 디지털 서명하고, 파일의 서명을 확인하고, 타임스탬프 파일을 확인하는 명령줄 CryptoAPI 도구입니다.

    SignTool [Operation] [Options] [FileName ...]

작업, 옵션 및 인수의 부분 목록

작업

catdb
카탈로그 데이터베이스를 업데이트하도록 SignTool을 구성합니다. SignTool은 데이터베이스에 카탈로그 파일을 추가하거나 데이터베이스에서 카탈로그를 제거합니다. 기본적으로 catdb 명령은 FileName 인수로 이름이 지정된 파일을 시스템 구성 요소(드라이버) 데이터베이스에 추가합니다.

참고 항목

카탈로그 데이터베이스는 카탈로그 파일의 자동 조회에 사용됩니다.

sign
FileName 인수로 이름이 지정된 파일을 디지털 서명하도록 SignTool을 구성합니다.

timestamp
FileName 인수로 이름이 지정된 파일을 타임스탬프하도록 SignTool을 구성합니다.

verify
FileName 인수로 이름이 지정된 파일의 디지털 서명을 확인하도록 SignTool을 구성합니다.

Catdb 작업 옵션

/d
카탈로그 데이터베이스를 업데이트하도록 SignTool을 구성합니다. /d 또는 /g 옵션을 모두 사용하지 않으면 SignTool은 시스템 구성 요소와 드라이버 데이터베이스를 업데이트합니다.

/g Guid
GUID 인수로 식별되는 카탈로그 데이터베이스를 업데이트하도록 SignTool을 구성합니다.

/r
FileName 인수로 이름이 지정된 각 카탈로그 파일을 카탈로그 데이터베이스에서 제거하도록 SignTool을 구성합니다. 이 옵션을 지정하지 않으면 SignTool은 지정된 카탈로그 파일을 카탈로그 데이터베이스에 추가합니다.

/u
카탈로그 데이터베이스의 기존 카탈로그 파일과의 충돌을 방지하기 위해 필요한 경우 카탈로그 파일에 고유한 이름을 생성하도록 SignTool을 구성합니다. 이 옵션을 지정하지 않으면 SignTool은 추가되는 카탈로그와 이름이 같은 기존 카탈로그를 덮어씁니다.

서명 작업 옵션

/a 최상의 서명 인증서를 자동으로 선택하도록 SignTool을 구성합니다. 이 옵션이 없으면 SignTool은 서명 인증서를 하나만 찾아야 합니다.

/ac CrossCertFileName
인증서 이름이며 인증서 저장소 StoreName에 설치된 SPC(소프트웨어 게시자 인증서)와 함께 사용되는 인증서 간 파일의 이름을 지정합니다. 서명 인증서가 SPC인 경우에만 이 옵션을 사용해야 합니다.

/c CertTemplateName
서명 인증서의 인증서 템플릿 이름(Microsoft 확장명)을 지정합니다.

/csp CSPName
프라이빗 키 컨테이너를 포함하는 CSP(암호화 서비스 공급자)를 지정합니다.

/d Desc
서명된 콘텐츠에 대한 설명을 지정합니다.

/du URL
서명된 콘텐츠의 확장된 설명에 대한 URL을 지정합니다.

/f SignCertFile
파일에 있는 서명 인증서를 지정합니다. PFX(개인 정보 교환) 파일 형식만 지원됩니다. Pvk2Pfx 도구를 사용하여 SPC 및 PVK 파일을 PFX 형식으로 변환할 수 있습니다.

파일이 암호로 보호되는 PFX 형식인 경우 /p 옵션을 사용하여 암호를 지정합니다. 파일에 프라이빗 키가 없는 경우 /csp/k 옵션을 사용하여 각각 CSP 및 프라이빗 키 컨테이너 이름을 지정합니다.

/fd
파일 서명을 만드는 데 사용할 파일 다이제스트 알고리즘을 지정합니다. 기본값은 SHA1입니다.

/i IssuerName
서명 인증서의 발급자 이름을 지정합니다. 이 값은 발급자의 전체 이름에서 부분 문자열이 될 수 있습니다.

/j DLL
서명의 특성을 제공하는 DLL의 이름을 지정합니다.

/jp ParameterName
/j 명령으로 지정된 DLL에 전달되는 매개 변수를 지정합니다.

/kc PrivKeyContainerName
프라이빗 키의 키 컨테이너 이름을 지정합니다.

/n SubjectName
서명 인증서의 주체 이름을 지정합니다. 이 값은 주체의 전체 이름에서 부분 문자열이 될 수 있습니다.

/nph
지원되는 경우 실행 파일에 대한 페이지 해시를 억제합니다. 기본값은 SIGNTOOL_PAGE_HASHES 환경 변수 및 wintrust.dll 버전에 의해 결정됩니다. PE 파일이 아닌 경우 이 옵션이 무시됩니다.

/p 암호
PFX 파일을 열 때 사용할 암호를 지정합니다. /f 옵션을 사용하여 PFX 파일을 지정할 수 있습니다.

/p7 경로
지정된 각 콘텐츠 파일에 대한 PKCS(공개 키 암호화 표준) #7 파일이 생성되도록 지정합니다. PKCS #7 파일의 이름은 path\filename.p7입니다.

/p7ce
서명된 PKCS #7 콘텐츠에 대한 옵션을 지정합니다. 서명된 콘텐츠를 PKCS #7 파일에 포함하려면 Value를 "Embedded"로 설정하고, 분리된 PKCS #7 파일의 서명된 데이터 부분을 생성하려면 "DetachedSignedData"로 설정합니다. /p7ce 옵션을 사용하지 않으면 서명된 콘텐츠가 기본적으로 포함됩니다.

/p7co OID
서명된 PKCS #7 콘텐츠를 식별하는 OID(개체 식별자)를 지정합니다.

/ph 지원되는 경우 실행 파일에 대한 페이지 해시를 생성합니다.

/r RootSubjectName
서명 인증서가 연결해야 하는 루트 인증서의 주체 이름을 지정합니다. 이 값은 루트 인증서 주체의 전체 이름에서 부분 문자열이 될 수 있습니다.

/s StoreName
파일 서명에 사용할 인증서를 검색할 때 열 인증서 저장소의 이름을 지정합니다. 이 옵션을 지정 하지 않으면 내 인증서 저장소가 열립니다.

/sha1 해시
서명 인증서의 SHA1 해시를 지정합니다.

/sm
사용자 인증서 저장소 대신 컴퓨터 인증서 저장소를 사용하도록 SignTool을 구성합니다.

/t URL
타임스탬프 서버에 대한 URL을 지정합니다. 이 옵션을 제공하지 않으면 서명된 파일은 타임스탬프가 지정되지 않습니다. 서명자의 키가 손상된 경우 타임스탬프가 파일에 서명하는 데 사용된 키를 해지하는 데 필요한 정보를 제공하기 때문에 카탈로그 파일 또는 드라이버 파일은 타임스탬프를 지정해야 합니다.

/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)의 사용을 지정합니다.

타임스탬프 작업 옵션

/p7 타임스탬프는 PKCS #7 파일입니다.

/t URL
타임스탬프 서버의 URL을 지정합니다. 타임스탬프가 지정된 파일은 이전에 서명되어 있어야 합니다.

/td alg
RFC 3161 타임 스탬프 서버에서 사용하는 다이제스트 알고리즘을 요청합니다. /td는 /tr 옵션과 함께 사용됩니다.

/tp 인덱스
index에서 시그니처에 타임스탬프를 지정합니다.

/tr alg
RFC 3161 타임 스탬프 서버에서 사용하는 다이제스트 알고리즘을 요청합니다. /td는 /tr 옵션과 함께 사용됩니다.

작업 옵션 확인

/a
모든 메서드를 사용하여 파일을 확인할 수 있도록 지정합니다. 먼저 카탈로그 데이터베이스를 검색하여 카탈로그에서 파일이 서명되었는지 여부를 확인합니다. 파일이 카탈로그에 서명되지 않은 경우 SignTool은 파일의 포함된 서명을 확인하려고 시도합니다. 이 옵션은 카탈로그에서 서명되거나 서명되지 않은 파일을 확인할 때 권장됩니다.

/광고
파일이 로그인된 카탈로그에 대한 기본 카탈로그 데이터베이스만 검색되도록 지정합니다.

/all
여러 개의 시그니처를 포함하는 파일의 모든 시그니처를 확인합니다.

/만큼
시스템 구성 요소(드라이버) 카탈로그 데이터베이스만 파일이 로그인된 카탈로그를 검색할 수 있도록 지정합니다.

/ag CatDBGUID
CatDBGUID 인수를 통해 식별된 카탈로그 데이터베이스만 파일이 로그인된 카탈로그를 검색할 수 있도록 지정합니다.

/c CatalogFileName
카탈로그 파일의 이름을 지정합니다.

/d 서명 도구에서 설명 및 설명 URL을 인쇄하도록 지정합니다.

/ds 인덱스
지정된 위치에서 시그니처를 확인합니다.

/hash {SHA1|SHA256}
카탈로그에서 파일을 검색할 때 사용할 선택적 해시 알고리즘을 지정합니다.

/kp
FileName 인수로 지정된 각 파일의 디지털 서명이 커널 모드 코드 서명 정책 및 Windows Vista 이상 버전의 PnP 디바이스 설치 서명 요구 사항을 준수하는지 확인하도록 SignTool을 구성합니다. 이 옵션을 지정하지 않으면 SignTool은 서명이 PnP 디바이스 설치 서명 요구 사항을 준수하는지 확인합니다.

/ms
여러 확인 의미 체계를 사용합니다. 이는 Windows 8 이상에서 WinVerifyTrust 함수 호출의 기본 동작입니다.

/o 버전
운영 체제 버전에 따라 파일을 확인합니다. Version 인수의 형식은 PlatformID:VerMajor.VerMinor.BuildNumber입니다.

/o 옵션을 사용하는 것이 좋습니다. /o를 지정하지 않으면 SignTool에서 예기치 않은 결과를 반환할 수 있습니다. 예를 들어 /o 옵션을 포함하지 않으면 이전 운영 체제에서 올바르게 유효성을 검사하는 시스템 카탈로그가 최신 운영 체제에서 올바르게 유효성을 검사하지 못할 수 있습니다.

/p7
PKCS #7 파일을 확인합니다. PKCS #7 유효성 검사에 기존 정책이 사용되지 않습니다. 서명이 확인되고 서명 인증서에 대한 체인이 빌드됩니다.

/pa
FileName 인수로 지정된 각 파일의 디지털 서명이 PnP 디바이스 설치 서명 요구 사항을 준수하는지 확인하도록 SignTool을 구성합니다.

참고 항목

이 옵션은 catdb 옵션과 함께 사용할 수 없습니다.

/pg PolicyGUID
GUID를 기준으로 확인 정책을 지정합니다. PolicyGUID는 확인 정책의 ActionID에 해당합니다.

참고 항목

이 옵션은 catdb 옵션과 함께 사용할 수 없습니다.

/ph 서명 도구에서 페이지 해시 값을 인쇄하고 확인하도록 지정합니다.

/r RootSubjectName
서명 인증서가 연결해야 하는 루트 인증서의 주체 이름을 지정합니다. 이 값은 루트 인증서 주체의 전체 이름에서 부분 문자열이 될 수 있습니다.

/tw
서명이 타임스탬프가 없는 경우 경고가 생성되도록 지정합니다.

일반 옵션

/q
성공적인 실행에 대한 출력을 표시하지 않고 실패한 실행에 대한 최소 출력을 표시하도록 SignTool을 구성합니다.

/v
자세한 작업 버전과 경고 메시지를 표시하도록 SignTool을 구성합니다.

/?
명령 창에 도움말 정보를 표시하도록 SignTool을 구성합니다.

파일...
하나 이상의 파일 이름 목록을 지정합니다. 명령에 따라 SignTool은 지정된 파일에 서명, 타임스탬프 또는 확인합니다. catdb 명령을 사용하는 경우 SignTool은 카탈로그 데이터베이스에서 지정된 파일을 추가하거나 제거합니다.

기호, 타임스탬프확인 명령의 경우 파일은 드라이버 패키지 또는 드라이버 파일의 카탈로그 파일일 수 있습니다.

catdb 명령의 경우 파일은 드라이버 패키지의 카탈로그 파일이어야 합니다.

설명

SignTool은 많은 옵션을 지원합니다. 이 항목에 설명된 옵션은 드라이버 패키지 또는 드라이버 파일에 서명하거나 확인하는 데 사용할 수 있는 옵션으로 제한됩니다.

SignTool 매개 변수의 전체 목록은 Microsoft SignTool 웹 사이트를 참조하세요.

파일 서명에 대한 자세한 내용은 Microsoft Cryptography Tools 웹 사이트를 참조하세요.

SignTool의 32비트 버전은 WDK의 bin\i386 폴더에 있습니다. 도구의 64비트 버전은 WDK의 bin\amd64 및 bin\ia64 폴더에 있습니다.

예제

다음은 SPC(소프트웨어 게시자 인증서) 및 해당 교차 인증서를 사용하여 드라이버 패키지의 카탈로그 파일에 서명 하는 방법의 예입니다. 이 예제는 커널 모드 코드 서명 정책을 적용하는 64비트 버전의 Windows Vista 이상 Windows용 드라이버 패키지에 서명하는 데 유효합니다. 이 예제에서는 드라이버 패키지의 카탈로그 파일 AbcCatFileName.cat 서명합니다. 카탈로그 파일에 서명하기 위해 이 예제에서는 인증서 간 AbcCrossCertificate 및 AbcSPCCertificate 인증서를 사용합니다. AbcSPCCertificate 인증서는 AbcCertificateStore 인증서 저장소에 있습니다.

또한 이 예제에서는 공개적으로 사용할 수 있는 타임스탬프 서버를 사용하여 카탈로그 파일에 서명합니다. 타임스탬프 서버는 DigiCert에서 제공되며 해당 URL은 .입니다 http://timestamp.digicert.com. 자세한 내용은 RFC3161 규격 TSA(Time Stamp Authority) 서버를 참조 하세요.

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcCatFileName.cat

다음은 SPC 및 교차 인증서를 사용하여 드라이버 파일에 서명을 포함하는 방법의 예입니다. 서명된 파일이 카탈로그 파일 AbcCatFileName.cat 대신 AbcDriverFile.sys 것을 제외하고 모든 매개 변수는 카탈로그 파일에 서명하는 예제와 동일합니다.

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcDriverFile.sys

다음은 상용 릴리스 인증서 또는 상용 테스트 인증서를 사용하여 드라이버 패키지의 카탈로그 파일에 서명하는 방법의 예입니다. 이 예제는 커널 모드 코드 서명 정책을 적용하지 않는 32비트 버전의 Windows Vista 이상 Windows용 드라이버 패키지에 서명하는 데 유효합니다. 이 예제에서는 드라이버 패키지의 카탈로그 파일 CatalogFileName.cat 서명합니다. 이 예제에서는 TestCertificateStore 인증서 저장소에 있는 AbcTestCertificate 테스트 인증서를 사용하여 카탈로그 파일에 서명합니다.

또한 이 예제에서는 공개적으로 사용할 수 있는 타임스탬프 서버를 사용하여 카탈로그 파일에 서명합니다. 타임스탬프 서버는 DigiCert에서 제공되며 해당 URL은 .입니다 http://timestamp.digicert.com.

SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.digicert.com CatalogFileName.cat

예제 확인

다음은 드라이버 패키지 카탈로그 파일의 서명이 커널 모드 코드 서명 정책 및 PnP 디바이스 설치 서명 요구 사항을 준수하는지 확인하는 방법의 예입니다. 이 예제에서는 카탈로그 파일 AbcCatalogFile.cat 서명을 확인합니다.

SignTool verify /kp CatalogFileName.cat

다음은 드라이버 패키지의 카탈로그 파일에 나열된 파일의 서명이 커널 모드 코드 서명 정책 및 PnP 디바이스 설치 서명 요구 사항을 준수하는지 확인하는 방법의 예입니다. 이 예제에서는 카탈로그 파일 CatalogFileName.cat 지문 항목이 있어야 하는 AbcDriverPackage.inf 파일의 서명을 확인합니다.

SignTool verify /kp /c CatalogFileName.cat AbcDriverPackage.inf

다음은 포함된 서명이 Windows Vista 이상 버전의 Windows에서 커널 모드 코드 서명 정책을 준수하는지 확인하는 방법의 예입니다. 이 예제에서는 드라이버 파일 AbcDriverFile.sys 포함된 서명을 확인합니다.

SignTool verify /kp AbcDriverFile.sys

다음은 드라이버 패키지 카탈로그 파일의 서명이 PnP 디바이스 설치 서명 요구 사항을 준수하는지 확인하는 방법의 예입니다. 이 예제에서는 카탈로그 파일 CatalogFileName.cat 서명을 확인합니다.

SignTool verify /pa CatalogFileName.cat

시스템 구성 요소(드라이버) 데이터베이스에 카탈로그 파일을 추가하는 예제

다음은 SignTool을 사용하여 시스템 구성 요소(드라이버) 데이터베이스에 카탈로그 파일 CatalogFileName.cat 추가하는 방법의 예입니다. /v 옵션은 자세한 정보 표시 모드에서 작동하도록 SignTool을 구성하고 /u 옵션은 필요한 경우 추가되는 카탈로그 파일에 대한 고유한 이름을 생성하도록 SignTool을 구성하여 CatalogFileName.cat 이름이 같은 기존 카탈로그 파일을 대체하지 않도록 합니다.

SignTool catdb /v /u CatalogFileName.cat