SignTool의 알려진 문제 및 문제 해결
SignTool을 사용할 때 가장 일반적인 오류 유형은 내부이며 일반적으로 다음과 같습니다.
SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B)
오류 코드가 0x80080206(APPX_E_CORRUPT_CONTENT)와 같은 0x8008 시작하는 경우 서명되는 패키지가 유효하지 않습니다. 이러한 유형의 오류가 발생하면 패키지를 다시 빌드하고 SignTool 을 다시 실행해야 합니다.
SignTool 에는 인증서 오류 및 필터링을 표시하는 데 사용할 수 있는 디버그 옵션이 있습니다. 디버깅 기능을 /debug
사용하려면 옵션 바로 뒤에 sign
전체 SignTool 명령을 붙입니다.
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 파일의 경우 4GB입니다(예: .exe 및 .sys). .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: 아니요, SignTool의 64비트 버전은 32비트 버전과 동일한 값을 사용합니다. 따라서 문제는 64비트에서 유지합니다.
Q4: 32비트 버전의 Windows를 사용하는 고객이 64비트 버전의 SignTool을 사용하여 서명된 파일을 사용하려고 하면 문제가 발생할 수 있나요?
A: 아니요. 그러나 어떤 버전의 SignTool이 사용되는지에 관계없이 제한 사항은 그대로 유지됩니다.
Q5: 다른 서명 도구 또는 메서드를 모두 사용해야 하나요?
A: 현재 디지털 서명에 대한 대체 방법이 없습니다.