앱 패키지 서명은 배포할 수 있는 MSIX 패키지를 만드는 과정에서 필요한 단계입니다. Windows 유효한 코드 서명 인증서를 사용하여 MSIX 패키지에 서명해야 합니다.
Windows 애플리케이션을 성공적으로 설치하려면 패키지에 서명할 필요가 없으며 디바이스에서도 신뢰할 수 있습니다. 즉, 인증서가 장치의 신뢰할 수 있는 루트 중 하나에 연결되어야 합니다. 기본적으로 Windows 코드 서명 인증서를 제공하는 대부분의 인증 기관의 인증서를 신뢰합니다.
또한 MSIX 번들을 만드는 경우 번들의 모든 패키지에 개별적으로 서명할 필요가 없습니다. 번들만 서명해야 합니다. 서명은 번들 내의 패키지를 포함합니다.
서명 옵션
시나리오에 따라 서명 방법을 선택합니다.
| 시나리오 | Option | Cost |
|---|---|---|
| 개발 및 로컬 테스트 | 자체 서명된 인증서 | 무료 |
| 생산 배포(권장) | Azure 아티팩트 서명(이전의 신뢰할 수 있는 서명) | 기본: ~$10/월 |
| 생산 배포(대체) | CA로부터 OV 코드 서명 인증서 | $300-500/년 |
| Microsoft Store 배포 | 스토어가 제출할 때 서명합니다 | 무료 |
비고
Azure 아티팩트 서명(이전의 신뢰할 수 있는 서명이라고 함)은 Microsoft 관리 코드 서명 서비스이며 프로덕션 MSIX 서명에 권장되는 옵션입니다. 주요 특징:
- ID 기반 평판: 평판은 특정 인증서가 아닌 확인된 게시자 ID에 연결되므로 빌드에 걸쳐 누적됩니다. 그러나 모든 비 스토어 배포와 마찬가지로 새 앱은 충분한 다운로드 기록이 빌드될 때까지 SmartScreen 경고를 계속 표시합니다. 일반적으로 몇 주가 걸립니다. Windows 앱 개발자에 대한 SmartScreen 평판 참조하세요.
- 수명이 짧은 인증서: 새 인증서가 매일 발급되고 각 인증서는 약 3일 동안 유효하게 유지되므로 필요한 경우 시간 정확한 해지를 사용할 수 있습니다.
-
CI/CD 준비: GitHub Actions(
azure/trusted-signing-action) 및 Azure DevOps 지원합니다.
공공 신탁 인증서 자격: 미국, 캐나다, 유럽 연합 및 영국의 조직 및 미국 및 캐나다의 개별 개발자에게 제공됩니다. 조직에는 3년 이상의 검증 가능한 세금 기록이 있어야 합니다. ID 유효성 검사에 대한 중요 정보를 참조하세요.
SignTool로 서명하려면 추가 설정이 필요합니다: SignTool은 필요한 dlib 플러그 인 및 .NET 8 런타임을 포함하는 아티팩트 서명 클라이언트 도구를 사용하는 경우에만 아티팩트 서명에서 작동합니다. 또한 계정 엔드포인트 및 인증서 프로필이 포함된 파일을 제공해야 합니다 metadata.json. 표준 Windows SDK SignTool 호출 자체는 아티팩트 서명에서 작동하지 않습니다. 가장 쉬운 설치는 다음과 같습니다.
winget install -e --id Microsoft.Azure.ArtifactSigningClientTools
SignTool 아티팩트 서명 설정을 참조하여 전체 설정을 확인하세요.
AzureSignTool은 Azure Key Vault 저장된 인증서로 서명하기 위한 별도의 커뮤니티 도구입니다. 아티팩트 서명을 지원하지 않습니다 . 두 가지는 고유한 서비스입니다. Visual Studio에서 Azure Key Vault를 기반으로 패키지를 서명하려면 Azure Key Vault로 패키지 서명을 참조하세요.
WinApp CLI
WinApp CLI는 개발 서명을 위한 편리한 명령을 제공합니다.
-
winapp cert generate- 개발을 위해 자체 서명된 인증서 만들기 -
winapp sign- 인증서를 사용하여 MSIX 패키지 또는 실행 파일에 서명 -
winapp tool signtool- Windows SDK에서 직접 SignTool에 액세스
서명 주제들
| 주제 | 설명 |
|---|---|
| 서명을 위한 필수 구성 요소 | 앱 패키지에 서명하는 데 필요한 필수 구성 요소입니다. |
| SignTool 사용 | Windows SDK에서 SignTool을 사용하여 앱 패키지에 서명하는 방법입니다. |
| Azure Key Vault로 패키지를 서명하기 | Visual Studio Azure Key Vault 저장된 인증서를 사용하여 패키지에 서명하는 방법입니다. |
| Device Guard 서명을 사용하여 MSIX 패키지 서명 | Device Guard 서명으로 앱에 서명하는 방법입니다. |
| 테스트를 위해 서명되지 않은 패키지 만들기 | 테스트를 위해 서명되지 않은 MSIX 패키지를 만드는 방법입니다. |
| Azure 아티팩트 서명 | Microsoft의 관리되는 서명 서비스(이전의 신뢰할 수 있는 서명)는 생산용 MSIX 패키지에 대한 것입니다. |
타임스탬핑
인증서로 앱에 서명할 때 타임스탬프를 사용하는 것이 좋습니다. 타임스탬프는 인증서가 만료된 후에도 앱 배포 플랫폼에서 앱 패키지를 수락할 수 있도록 서명을 유지합니다. 패키지 검사 시간에 타임스탬프를 사용하면 서명된 시간을 기준으로 패키지 서명의 유효성을 검사할 수 있습니다. 이렇게 하면 인증서가 더 이상 유효하지 않은 후에도 패키지를 수락할 수 있습니다. 타임스탬프가 지정되지 않은 패키지는 현재 시간에 대해 평가되며 인증서가 더 이상 유효하지 않으면 Windows 패키지를 수락하지 않습니다.
다음은 타임스탬프를 사용하거나 사용하지 않는 앱 서명과 관련된 다양한 시나리오입니다.
| 시나리오 | 앱이 타임스탬프 없이 서명됨 | 앱이 타임스탬핑으로 서명됨 |
|---|---|---|
| 인증서가 유효합니다. | 앱이 설치됩니다. | 앱이 설치됩니다. |
| 인증서가 잘못됨(만료됨) | 앱이 설치되지 않습니다. | 앱은 타임스탬프 기관에서 서명할 때 인증서의 진위 여부를 확인하면 설치됩니다. |
비고
앱이 장치에 성공적으로 설치되면 타임스탬프 여부에 관계없이 인증서가 만료된 후에도 계속 실행됩니다.
패키지 무결성 적용
신뢰할 수 있는 애플리케이션만 디바이스에 설치되도록 하는 것 외에도 MSIX 패키지 서명의 추가 이점은 Windows 디바이스에 배포된 후 패키지 및 해당 콘텐츠의 무결성을 적용할 수 있다는 것입니다. 서명된 패키지에서 AppxBlockMap.xml 및 AppxSignature.p7x 연결하면 Windows 런타임 및 Windows Defender 검사 중에 패키지 및 해당 콘텐츠의 무결성에 대한 유효성 검사를 수행할 수 있습니다. 패키지가 변조된 것으로 간주되는 경우 Windows 애플리케이션 시작을 차단하고 수정 워크플로를 시작하여 패키지를 복구하거나 다시 설치합니다. Microsoft Store 통해 배포되지 않은 패키지의 경우 패키지가 uap10:PackageIntegrity 요소를 선언하고 Windows 2004 이상 빌드에 배포되는 경우 패키지 무결성이 적용됩니다. 다음은 AppxManifest.xml에서 패키지 무결성 시행의 선언 예입니다.
<Package ...
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
IgnorableNamespaces="uap10">
...
<Properties>
<uap10:PackageIntegrity>
<uap10:Content Enforcement="on" />
</uap10:PackageIntegrity>
</Properties>
...
</Package>
장치 모드
Windows 10 통해 사용자는 설정 앱에서 디바이스를 실행할 모드를 선택할 수 있습니다. 모드는 Microsoft Store 앱, 테스트용 로드 앱 및 개발자 모드입니다.
Microsoft Store 앱은 Microsoft Store 앱 설치만 허용하기 때문에 가장 안전합니다. Microsoft Store 앱은 인증 프로세스를 거쳐 앱이 안전하게 사용할 수 있도록 합니다.
사이드로드 앱 및 개발자 모드는 해당 인증서가 신뢰할 수 있으며 장치의 신뢰할 수 있는 루트 중 하나와 체인으로 연결되는 경우, 다른 인증서로 서명된 앱에 대해 더 관대합니다. 개발자이고 Windows 10 앱을 빌드하거나 디버깅하는 경우에만 개발자 모드를 선택합니다. 개발자 모드 및 제공하는 기능에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
비고
Windows 10 버전 2004부터 사이드로드 옵션은 기본적으로 켜져 있습니다. 결과적으로 개발자 모드는 이제 토글입니다. 기업은 여전히 정책을 통해 사이드로딩을 비활성화할 수 있습니다.