본문으로 건너뛰기

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.dll을(를) ProgramData/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 공급자 등록 취소: 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.exe는 Microsoft 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 install 및 signtool ksp add를 실행하십시오.
no such certificate code삭제할 인증서 번호가 존재하지 않습니다.signtool ksp list를 사용하여 인증서 번호를 확인하십시오.

보안 주의사항​

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