SignTool 명령줄 도구 사용 가이드
SignTool은 sslTrus 원격 코드 서명 서비스의 명령줄 클라이언트로, 터미널 또는 자동화 스크립트에서 코드 서명 작업을 수행하는 데 사용됩니다.
빠른 시작
다음은 가장 기본적인 서명 명령 예시입니다. 복사한 후 주석에 따라 수정하여 사용할 수 있습니다.
# 视情况而定,是否需要开启调试模式
#export DEBUG=1
# 使用环境变量配置 AK、SK 以及证书订阅号
export SIGNTOOL_ACCESS_KEY='' SIGNTOOL_ACCESS_SECRET='' SIGNTOOL_CERT_CODE=''
# 签名
./signtool sign \
--dry-run \
--access-key=$SIGNTOOL_ACCESS_KEY \
--access-secret=$SIGNTOOL_ACCESS_SECRET \
--cert-code=$SIGNTOOL_CERT_CODE \
--file=app-unsigned.exe \
--out=app.exe \
--sha1=false \
--sha2=true \
--timestamp-rfc3161 http://timestamp.acs.microsoft.com
명령어 상세 설명
시작하기 전에 다음 세 가지 정보를 준비해야 합니다:
도움말 보기
-h 또는 --help 매개변수를 사용하면 전체 명령 도움말을 볼 수 있습니다.
./signtool sign -h
핵심 파라미터 분석
| 매개변수 | 약어 | 필수 여부 | 설명 및 예시 |
|---|---|---|---|
| --access-key | -k | 예 | API 액세스 키입니다. SIGNTOOL_ACCESS_KEY 환경 변수로도 설정할 수 있습니다. |
| --access-secret | -s | 예 | API 액세스 키입니다. SIGNTOOL_ACCESS_SECRET 환경 변수로도 설정할 수 있습니다. |
| --cert-code | -c | 예 | 원격 코드 서명 서비스의 구독 번호로, 서명 인증서와 과금을 지정하는 데 사용됩니다. |
| --file | -f | 예 | 서명할 파일의 경로입니다. 예: -f “app.dll”. |
| --out | -o | 아니요 | 출력 파일의 경로입니다. 기본값은 원본 파일명 뒤에 .signed를 추가합니다. 중요: 파일이 이미 존재하면 작업이 실패합니다. |
| --override | 아니요 | 서명할 파일의 경로를 덮어쓸지 여부입니다. 기본값은 false입니다. | |
| --sha1 | -1 | 아니요 | SHA1 알고리즘 서명을 활성화합니다(구형 시스템 호환용). |
| --sha2 | -2 | 아니요 | SHA256 알고리즘 서명을 활성화합니다(현대 표준, 활성화 권장). |
| --nest | 아니요 | 중첩 서명 여부입니다. 파일에 이미 서명이 있는 경우 --nest=true(기본값)는 기존 서명을 유지하고 새 서명을 추가하며, false는 기존 서명을 제거합니다. 효과 비교는 다음과 같습니다: ![]() | |
| --timestamp | 아니요 | SHA1 서명에 사용할 타임스탬프 서버 URL입니다. 빈 문자열 ""로 설정하면 비활성화됩니다. | |
| --timestamp-rfc3161 | 아니요 | SHA256 서명에 사용할 RFC 3161 타임스탬프 서버 URL입니다. 빈 문자열 ""로 설정하면 비활성화됩니다. | |
| --desc | -n | 아니요 | 프로그램 설명 정보입니다. 이 정보는 서명에 포함되며, 아래와 같은 시스템 보안 알림에 표시될 수 있습니다: ![]() |
| --url | -u | 아니요 | 프로그램의 공식 정보 링크입니다. |
| --verify | 아니요 | 서명 후 파일 서명 유효성을 즉시 검증합니다. | |
| --dry-run | 아니요 | 체험 모드입니다. 이 모드에서는 자체 서명 인증서를 사용하여 서명 프로세스를 검증하며, 해당 액세스 키와 구독 번호는 임의로 입력할 수 있습니다. |
불리언 매개변수 정보
true/false 값을 허용하는 매개변수(예: --sha1, --nest)의 경우 매개변수=값 형식을 사용해야 하며 공백으로 구분하는 방식은 지원되지 않습니다.
- 올바름: --sha1=true --sha2=false
- 잘못됨: --sha1 true --sha2 false

