본문으로 건너뛰기

signtool ksp와 Windows KSP 통합

signtool ksp는 Windows sslTrus Key Storage Provider(KSP)를 관리합니다. KSP 설치 및 구성이 완료되면 Microsoft signtool.exe이(가) CNG Provider를 통해 원격 서명 서비스를 호출할 수 있어, 로컬에 개인 키를 보관할 필요가 없습니다.

주의

signtool ksp의 모든 하위 명령은 Windows 플랫폼만 지원합니다. Windows가 아닌 플랫폼에서 임의의 ksp 하위 명령을 실행하면 다음이 반환됩니다: key storage provider is only supported on windows


하위 명령 개요

signtool ksp [command]
하위 명령용도
installKSP DLL 설치 및 등록
uninstallKSP 등록 해제 후 DLL 삭제
list저장된 KSP 키 구성 목록 조회
addKSP 키 구성 추가(대화형)
del지정된 KSP 키 구성 삭제(대화형)
설명

--address 매개변수는 ksp add 시에만 유효하며, 인증서 PEM을 가져오고 원격 서비스 주소를 저장하는 데 사용됩니다.


KSP 설치

signtool ksp install

실행 후:

  1. 내장된 sslTrusKSP.dllProgramData/sslTrusKSP/sslTrusKSP.dll에 씁니다.
  2. ProgramData의 DLL 버전이 System32의 버전과 다를 경우, DLL을 System32로 복사합니다.
  3. CNG Provider를 등록합니다: sslTrus Key Storage Provider.
  4. KSP 구성 파일 ProgramData/sslTrusKSP/config.dat을 저장합니다(DPAPI 암호화).
주의

install는 시스템 수준 CNG Provider 등록을 수정하므로 관리자 터미널에서 실행할 것을 권장합니다. DLL 버전이 동일한 것으로 감지되면 ksp is already installed를 기록하고 바로 반환합니다.


KSP 제거

signtool ksp uninstall

실행 후:

  1. CNG Provider 등록을 해제합니다: sslTrus Key Storage Provider.
  2. ProgramData/sslTrusKSP/sslTrusKSP.dll을(를) 삭제합니다.
  3. System32에서 sslTrusKSP.dll을(를) 삭제합니다.
설명

uninstall은(는) 전체 ProgramData/sslTrusKSP 디렉터리를 삭제하지 않습니다. 저장된 config.dat, 인증서 파일 및 로그는 수동으로 정리해야 합니다.


키 구성 보기

signtool ksp list

출력 필드 설명:

필드의미
No일련번호
CertCode인증서 번호
ServerUrlnicsrs 또는 default(으)로 표시
AccessKeyAccess Key
AccessSecret마스킹 처리된 Access Secret
설명
  • 구성 파일이 없는 경우 no ksp configuration을(를) 반환합니다.
  • 구성이 존재하지만 키 목록이 비어 있는 경우 no ksp key를 기록합니다.
  • AccessSecret는 마스킹하여 표시하지만, 구성 파일 자체는 여전히 민감 파일로 관리해야 합니다.

키 구성 추가

signtool ksp add

NICSRS 주소 지정:

signtool ksp add --address nicsrs

명령은 대화형이며 순서대로 입력하십시오:

Please enter the access key: your-access-key
Please enter the access secret: your-access-secret
Please enter the certificate code: CERT_CODE

실행 후:

  1. 원격 /v1/codesign/cert를 호출하여 인증서 PEM을 가져옵니다.
  2. 인증서를 ProgramData/sslTrusKSP/CERT_CODE.crt(으)로 저장합니다.
  3. 키 구성을 ProgramData/sslTrusKSP/config.dat에 씁니다(DPAPI 암호화).

인증서 번호가 이미 존재하는 경우 다음과 같이 안내합니다:

The certificate code already exists, do you want to override it? [y/N]

y을(를) 입력하면 덮어쓰며, 다른 값을 입력하거나 그냥 Enter 키를 누르면 취소됩니다.

주의

ksp add은(는) 대화형 명령이며, 현재 --access-key, --cert-code 등 비대화형 매개변수는 지원하지 않습니다. 구성을 추가하면 원격 API에 접근하며, 인증서 PEM을 로컬 ProgramData에 기록합니다.


키 구성 삭제

signtool ksp del

인증서 번호를 대화식으로 입력합니다:

Please enter the certificate code: CERT_CODE

실행 후 config.dat에서 일치하는 키 구성을 삭제하고, 암호화된 구성 파일을 다시 저장합니다.

설명

현재 구현은 구성 항목만 삭제하며, ProgramData/sslTrusKSP/CERT_CODE.crt 인증서 파일은 삭제하지 않습니다.


KSP를 통해 Microsoft signtool.exe 사용

KSP 구성이 완료되면 Windows SDK의 Microsoft signtool.exe를 사용하여 Provider를 호출합니다.

주의

아래 명령의 signtool.exeMicrosoft Windows SDK에 기본 제공되는 도구이며, sslTrus CLI가 아닙니다. 현재 디렉터리나 PATH에 둘 다 존재하는 경우 혼동을 피하기 위해 Windows SDK 내 signtool.exe의 전체 경로를 사용하시기 바랍니다.

SHA256 서명 예시:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
.\EXAMPLE.exe

SHA1 서명 추가 예시:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA1 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
/as ^
.\EXAMPLE.exe

매개변수 설명:

매개변수의미
/csp "sslTrus Key Storage Provider"sslTrus가 설치한 KSP Provider를 지정합니다
/kc CERT_CODEKSP 키 이름을 지정하며, 인증서 번호로 약정됩니다
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crtksp add에 저장된 인증서 파일을 지정합니다
/fd SHA256 또는 /fd SHA1파일 다이제스트 알고리즘
/tr <url>RFC3161 타임스탬프 서비스
/td SHA256타임스탬프 다이제스트 알고리즘
/as서명을 추가하며 기존 서명을 덮어쓰지 않습니다.

트러블슈팅 참고

오류 메시지가능한 원인처리 권장 사항
key storage provider is only supported on windowsWindows가 아닌 플랫폼에서 ksp 명령을 실행했습니다.Windows에서만 KSP 작업을 실행하십시오.
no ksp configurationKSP 구성 파일이 아직 생성되지 않았습니다.먼저 signtool ksp installsigntool ksp add를 실행하십시오.
no such certificate code삭제하려는 인증서 번호가 존재하지 않습니다.signtool ksp list를 사용하여 인증서 번호를 확인하십시오.

보안 주의 사항

  • signtool ksp installsigntool ksp uninstall는 Windows 시스템 디렉터리와 CNG Provider 등록 정보를 수정하므로 일반적으로 관리자 권한이 필요합니다.
  • signtool ksp add는 원격 인증서 인터페이스에 접근하며, 인증서 파일과 암호화 구성을 ProgramData/sslTrusKSP에 기록합니다.
  • Access Secret, KSP 구성 파일, 로컬 로그는 모두 민감 정보로 취급해야 하며, 로그나 버전 저장소에 기록하지 마십시오.