앱 패키지 서명 오류를 해결하는 방법
앱 배포 실패는 앱 패키지의 디지털 서명 유효성을 검사하지 못하여 발생할 수 있습니다. 이러한 실패를 인식하는 방법과 이러한 오류에 대해 수행할 작업을 알아봅니다.
패키지된 Windows 앱을 배포할 때 Windows는 항상 앱 패키지에서 디지털 서명의 유효성을 검사하려고 시도합니다. 패키지의 서명 유효성 검사 블록 배포 중 오류가 발생했습니다. 그러나 패키지가 유효성을 검사하지 않은 이유는 명확하지 않을 수 있습니다. 특히 로컬 테스트를 위해 프라이빗 인증서를 사용하여 패키지에 서명하는 경우 해당 인증서에 대한 신뢰도 관리해야 하는 경우가 많습니다. 잘못된 인증서 신뢰 구성으로 인해 서명 유효성 검사 오류가 발생할 수 있습니다.
알아야 하는 작업
기술
사전 요구 사항
- 설치 실패를 진단하는 Windows 이벤트 로그입니다.
- 문제 해결 중 인증서 저장소 조작을 위한 인증서 관리를 위한 Certutil 작업
지침
1단계: 이벤트 로그에서 진단 정보 검사
앱을 배포하려고 시도한 방법에 따라 배포 실패에 대한 의미 있는 오류 코드가 수신되지 않았을 수 있습니다. 이 경우 일반적으로 이벤트 로그에서 직접 오류 코드를 가져올 수 있습니다.
이벤트 로그에서 오류 코드를 얻으려면
eventvwr.msc를 실행합니다.
이벤트 뷰어(로컬)>애플리케이션 및 서비스 로그Microsoft>Windows로 > 이동합니다.
검사 첫 번째 로그는 AppxPackagingOM>Microsoft-Windows-AppxPackaging/Operational입니다.
배포 관련 오류는 AppXDeployment-Server>Microsoft-Windows-AppXDeploymentServer/Operational에 기록됩니다.
배포 오류는 가장 최근의 오류 이벤트 404를 검색합니다. 이 오류 이벤트는 오류 코드와 배포가 실패한 이유에 대한 설명을 제공합니다. 오류 이벤트 465가 404 이벤트 앞에 있는 경우 패키지를 여는 데 문제가 있습니다.
465 오류가 발생하지 않은 경우 Windows 앱의 일반 패키징, 배포 및 쿼리 문제 해결을 참조하세요. 그렇지 않으면 오류 이벤트 465에 대한 오류 문자열에 표시할 수 있는 일반적인 오류 코드는 이 표를 참조하세요.
오류 코드 | 오류 | Description | 제안 해결 방법 |
---|---|---|---|
0x80073CF0 | ERROR_INSTALL_OPEN_PACKAGE_FAILED | 앱 패키지를 열 수 없습니다. | 이 오류는 일반적으로 패키지에 문제가 있음을 나타냅니다. 패키지를 다시 빌드하고 서명해야 합니다. 자세한 내용은 앱 패키지 사용 을 참조하세요. |
0x80080205 | APPX_E_INVALID_BLOCKMAP | 앱 패키지가 변조되었거나 잘못된 블록 맵이 있습니다. | 패키지가 손상되었습니다. 패키지를 다시 빌드하고 서명해야 합니다. 자세한 내용은 앱 패키지 사용 을 참조하세요. |
0x800B0004 | TRUST_E_SUBJECT_NOT_TRUSTED | 앱 패키지가 변조되었습니다. | 패키지 내용이 더 이상 디지털 서명과 일치하지 않습니다. 패키지에 다시 서명해야 합니다. 자세한 내용은 SignTool을 사용하여 앱 패키지에 서명하는 방법을 참조하세요. |
0x800B0100 | TRUST_E_NOSIGNATURE | 앱 패키지가 서명되지 않았습니다. | 서명된 Windows 앱 패키지만 배포할 수 있습니다. 앱 패키지 서명에 대한 자세한 내용은 SignTool을 사용하여 앱 패키지에 서명하는 방법을 참조하세요. |
0x800B0109 | CERT_E_UNTRUSTED_ROOT | 앱 패키지에 서명하는 데 사용된 인증서 체인은 신뢰할 수 없는 루트 인증서로 끝납니다. | 인증서 신뢰 문제를 해결하려면 2단계를 계속 진행합니다. |
0x800B010A | CERT_E_CHAINING | 앱 패키지에 서명하는 데 사용된 인증서에서 신뢰할 수 있는 루트 기관에 인증서 체인을 빌드할 수 없습니다. | 인증서 신뢰 문제를 해결하려면 2단계를 계속 진행합니다. |
2단계: 앱 패키지 서명에 사용되는 인증서 체인 확인
로컬 컴퓨터에서 신뢰해야 하는 인증서를 파악하려면 앱 패키지의 디지털 서명에 대한 인증서 체인을 검사할 수 있습니다.
인증서 체인을 확인하려면
- 파일 탐색기 앱 패키지를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
- 속성 대화 상자에서 디지털 서명 탭을 선택하면 서명의 유효성을 검사할 수 있는지 여부도 표시됩니다.
- 서명 목록에서 서명을 선택한 다음 세부 정보 단추를 클릭합니다.
- 디지털 서명 세부 정보 대화 상자에서 인증서 보기 단추를 클릭합니다.
- 인증서 대화 상자에서 인증 경로 탭을 선택합니다.
체인의 최상위 인증서는 루트 인증서이고 아래쪽 인증서는 서명 인증서입니다. 단일 인증서만 체인에 있는 경우 서명 인증서도 자체 루트 인증서입니다. Certutil에서 사용하는 각 인증서의 일련 번호를 확인할 수 있습니다.
각 인증서의 일련 번호를 확인하려면
- 인증 경로 창에서 인증서를 선택한 다음 인증서 보기를 클릭합니다.
- 인증서 대화 상자에서 인증서의 일련 번호 및 기타 유용한 속성을 표시하는 세부 정보 탭을 선택합니다.
3단계: 로컬 컴퓨터에서 신뢰할 수 있는 인증서 확인
앱 패키지를 배포하려면 사용자의 컨텍스트뿐만 아니라 로컬 컴퓨터 컨텍스트에서도 신뢰할 수 있어야 합니다. 따라서 디지털 서명은 이전 단계의 디지털 서명 탭에서 볼 때 유효하게 표시될 수 있지만 앱 패키지를 배포하는 동안 유효성 검사에 실패합니다.
앱 패키지에 서명하는 데 사용되는 인증서 체인이 로컬 컴퓨터에서 특별히 신뢰할 수 있는지 확인하려면
다음 명령을 실행합니다.
CertUtil.exe -store Root rootCertSerialNumber
다음 명령을 실행합니다.
CertUtil.exe -store TrustedPeople signingCertSerialNumber
인증서 일련 번호를 지정하지 않으면 Certutil 은 해당 저장소에 대한 로컬 컴퓨터에서 신뢰하는 모든 인증서를 나열합니다.
서명 인증서가 자체 서명되지 않고 루트 인증서가 로컬 컴퓨터의 루트 저장소에 있더라도 인증서 연결 오류로 인해 패키지를 설치하지 못할 수 있습니다. 이 경우 중간 인증 기관에 대한 신뢰에 문제가 있을 수 있습니다. 이 문제에 대한 자세한 내용은 인증서 작업을 참조하세요.
설명
서명 인증서를 신뢰할 수 없어 패키지를 배포할 수 없다고 판단한 경우 패키지를 시작한 위치를 알고 신뢰하지 않는 한 패키지를 설치하지 마세요.
설치를 위해 앱을 수동으로 신뢰하려는 경우(예: 테스트 서명된 자체 앱 패키지를 설치하려면) 앱 패키지에서 로컬 컴퓨터 인증서 신뢰에 인증서를 수동으로 추가할 수 있습니다.
로컬 컴퓨터 인증서 신뢰에 인증서를 수동으로 추가하려면
- 파일 탐색기 앱 패키지를 마우스 오른쪽 단추로 클릭하고 팝업 상황에 맞는 메뉴에서 속성을 선택합니다.
- 속성 대화 상자에서 디지털 서명 탭을 선택합니다.
- 서명 목록에서 서명을 선택한 다음 세부 정보 단추를 클릭합니다.
- 디지털 서명 세부 정보 대화 상자에서 인증서 보기 단추를 클릭합니다.
- 인증서 대화 상자에서 인증서 설치... 단추를 클릭합니다.
- 인증서 가져오기 마법사에서 로컬 컴퓨터를 선택하고 다음을 클릭합니다. 계속하려면 관리자 권한을 부여해야 합니다.
- 다음 저장소에 모든 인증서 배치를 선택하고 신뢰할 수 있는 사람 저장소로 이동합니다.
- 다음을 클릭한 다음 마침을 클릭하여 마법사를 완료합니다.
이 수동 추가 후에는 인증서 대화 상자 에서 인증서를 신뢰할 수 있음을 확인할 수 있습니다.
인증서가 더 이상 필요하지 않으면 인증서를 제거할 수 있습니다.
인증서를 제거하려면
관리자 권한으로 Cmd.exe 실행합니다.
관리자 명령 프롬프트에서 다음 명령을 실행합니다.
Certutil -store TrustedPeople
설치한 인증서의 일련 번호를 찾습니다. 이 숫자는 certID입니다.
다음 명령을 실행합니다.
Certutil -delStore TrustedPeople certID
로컬 머신 신뢰할 수 있는 루트 인증 기관 인증서 저장소에 루트 인증서를 수동으로 추가하지 않는 것이 좋습니다. LOB(기간 업무) 애플리케이션과 같이 동일한 루트 인증서에 연결된 인증서로 서명된 여러 애플리케이션을 갖는 것이 신뢰할 수 있는 사람 저장소에 개별 인증서를 설치하는 것보다 더 효율적일 수 있습니다. 신뢰할 수 있는 사람 저장소에는 기본적으로 신뢰할 수 있는 것으로 간주되는 인증서가 포함되어 있으므로 상위 기관 또는 인증서 신뢰 목록 또는 체인에서 확인되지 않습니다. 신뢰할 수 있는 루트 인증 기관 인증서 저장소에 인증서를 추가하는 방법에 대한 고려 사항은 코드 서명 모범 사례를 참조하세요.
보안 고려 사항
로컬 컴퓨터 인증서 저장소에 인증서를 추가하면 컴퓨터의 모든 사용자의 인증서 신뢰에 영향을 줍니다. 앱 패키지를 테스트하려는 코드 서명 인증서를 신뢰할 수 있는 사람 인증서 저장소에 설치하는 것이 좋습니다. 시스템 신뢰를 손상시키는 데 사용되지 않도록 더 이상 필요하지 않은 경우 해당 인증서를 즉시 제거합니다. 앱 패키지 서명에 대한 고유한 테스트 인증서를 만드는 경우 테스트 인증서와 연결된 권한을 제한하는 것이 좋습니다. 앱 패키지 서명에 대한 테스트 인증서를 만드는 방법에 대한 자세한 내용은 앱 패키지 서명 인증서를 만드는 방법을 참조하세요.
관련 항목