SignTool에 대한 알려진 문제 및 문제 해결

SignTool을 사용할 때 가장 일반적인 유형의 오류는 내부이며 일반적으로 다음과 같습니다.

SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B) 

오류 코드가 APPX_E_CORRUPT_CONTENT(0x80080206)와 같은 0x8008 시작하는 경우 서명되는 패키지가 유효하지 않습니다. 이러한 유형의 오류가 발생하면 패키지를 다시 빌드하고 SignTool을 다시 실행해야 합니다.

SignTool에는 인증서 오류 및 필터링을 표시하는 데 사용할 수 있는 디버그 옵션이 있습니다. 디버깅 기능을 사용하려면 옵션 바로 뒤에 전체 /debugsign/debug 명령을 배치합니다.

SignTool sign /debug [options]

더 일반적인 오류는 0x8007000B. 이러한 유형의 오류는 이벤트 로그에서 자세한 정보를 찾을 수 있습니다.

이벤트 로그에서 자세한 정보를 찾으려면 다음을 수행합니다.

  • Eventvwr.msc 실행
  • 이벤트 로그 열기: 이벤트 뷰어(로컬) - > 애플리케이션 및 서비스 로그 - Microsoft - Windows - >>> AppxPackagingOM - > Microsoft-Windows-AppxPackaging/Operational
  • 가장 최근의 오류 이벤트 찾기

내부 오류 0x8007000B 일반적으로 다음 값 중 하나에 해당합니다.

이벤트 ID 예제 이벤트 문자열 제안 해결 방법
150 오류 0x8007000B: 앱 매니페스트 게시자 이름(CN=Contoso)은 서명 인증서의 주체 이름(CN=Contoso, C=US)과 일치해야 합니다. 앱 매니페스트 게시자 이름은 서명의 주체 이름과 정확히 일치해야 합니다.
151 오류 0x8007000B: 지정된 서명 해시 메서드(SHA512)는 앱 패키지 블록 맵(SHA256)에 사용되는 해시 메서드와 일치해야 합니다. /fd 매개 변수에 지정된 hashAlgorithm이 잘못되었습니다. 앱 패키지 블록 맵과 일치하는 hashAlgorithm을 사용하여 SignTool을 다시 실행합니다(앱 패키지를 만드는 데 사용).
152 오류 0x8007000B: 앱 패키지 콘텐츠가 해당 블록 맵에 대해 유효성을 검사해야 합니다. 앱 패키지가 손상되었으며 새 블록 맵을 생성하려면 다시 빌드해야 합니다. 앱 패키지를 만드는 자세한 내용은 MakeAppx.exe 도구를 사용하여 앱 패키지 만들기를 참조하세요.

또 다른 일반적인 오류는 0x80080057. Windows SignTool 도구를 사용하여 PE(이식 가능한 실행 파일) 파일에 서명하려고 할 때 다음과 같은 문제가 발생할 수 있습니다.

  • 4GB 이상인 PE 파일에 서명하지 못함 서명을 시도하면 "잘못된 매개 변수(0x80080057)" 오류 메시지가 표시됩니다.

  • 4GB보다 큰 파일의 경우 SignTool이 파일에 성공적으로 서명하더라도 생성된 해시가 정확하지 않을 수 있습니다.

    참고

    .cat 파일의 경우 특히 그렇습니다.

이 문제는 .exe, .sys 등의 PE 파일에 대해 발생합니다. 이 문제는 이미지 크기를 지정하는 PE 헤더의 ULONG 변수 때문에 발생합니다. (이미지 크기는 Vista 및 이전 버전과 같은 다운 레벨 운영 체제의 경우 2GB입니다.) 이는 1996년 이후의 디자인 제한 사항입니다. 이 값의 최대 제한은 pe 파일(예: .exe 및 .sys)의 경우 4GB입니다. .cat 파일은 일반적으로 서명할 수 있지만 생성된 내부 해시는 정확하지 않을 수 있습니다.

이 문제를 해결하려면 서명하려는 PE 파일이 4GB 미만인지 확인합니다. 이전 버전과의 호환성 위험으로 인해 현재 백포트와 영구 수정이 모두 가능하지 않습니다. 그러나 이 문제는 조사되고 있습니다.

참고

이 문제는 SignTool에만 국한되지 않습니다. PE 헤더 디자인은 사용되는 도구에 관계없이 Windows 7 이상 Windows 버전의 경우 4GB로 제한됩니다.

질문과 대답(FAQ)

Q1: Windows 디지털 서명(및 타임스탬프 카운터 서명)에 대한 현재 공식 파일 크기 제한은 무엇인가요?

A1: .exe 및 .sys 같은 PE 파일의 경우 서명에 대한 최대 파일 크기는 4GB입니다.

Q2: 대용량 파일에 서명하는 기능이 가장 많은 특정 버전의 Windows(예: Windows Server 2016)가 있나요?

A2: 아니요, 이 문제는 모든 버전의 Windows 영향을 미칩니다.

Q3: Signtool의 64비트 버전이 32비트 버전보다 이 기능을 더 잘 지원하나요?

A: 아니요, 64비트 버전의 SignTool은 32비트 버전과 동일한 값을 사용합니다. 따라서 문제는 64비트에서 유지합니다.

Q4: 32비트 버전의 Windows 사용하는 고객이 64비트 버전의 SignTool을 사용하여 서명된 파일을 사용하려고 하면 문제가 발생할 수 있나요?

A: 아니요. 그러나 어떤 버전의 SignTool이 사용되는지에 관계없이 제한은 그대로 유지됩니다.

Q5: 다른 서명 도구 또는 메서드를 모두 사용해야 할까요?

A: 현재 디지털 서명에 대한 대체 방법이 없습니다.