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

