SignTool을 사용하여 앱 패키지에 서명Sign an app package using SignTool

SignTool 는 인증서를 사용 하 여 앱 패키지 또는 번들에 디지털 서명 하는 데 사용 되는 명령줄 도구입니다.SignTool is a command line tool used to digitally sign an app package or bundle with a certificate. 인증서는 사용자가 만들거나 (테스트 목적) 회사에서 발급 (배포의 경우) 할 수 있습니다.The certificate can either be created by the user (for testing purposes) or issued by a company (for distribution). 앱 패키지에 서명 하면 응용 프로그램의 데이터가 서명 된 후 수정 되지 않은 것을 확인 하는 동시에 사용자가 서명한 사용자 또는 회사의 id도 확인할 수 있습니다.Signing an app package provides the user with verification that the app's data has not been modified after it was signed while also confirming the identity of the user or company that signed it. SignTool 는 암호화 되거나 암호화 되지 않은 앱 패키지 및 번들에 서명할 수 있습니다.SignTool can sign encrypted or unencrypted app packages and bundles.

중요

Visual Studio를 사용 하 여 앱을 개발 하는 경우 Visual Studio 마법사를 사용 하 여 앱 패키지를 만들고 서명 하는 것이 좋습니다.If you used Visual Studio to develop your app, it's recommended that you use the Visual Studio wizard to create and sign your app package. 자세한 내용은 Visual studio를 사용 하 여 UWP 앱 패키지visual studio를 사용 하 여 소스 코드에서 데스크톱 앱 패키지를 참조 하세요.For more information, see Package a UWP app with Visual Studio and Package a desktop app from source code using Visual Studio.

일반적으로 코드 서명 및 인증서에 대 한 자세한 내용은 코드 서명 소개를 참조 하세요.For more information about code signing and certificates in general, see Introduction to Code Signing.

필수 구성 요소Prerequisites

  • 패키지 된 앱A packaged app
    앱 패키지를 수동으로 만드는 방법에 대 한 자세한 내용은 MakeAppx.exe 도구를 사용 하 여 앱 패키지 만들기를 참조 하세요.To learn more about manually creating an app package, see Create an app package with the MakeAppx.exe tool.

  • 유효한 서명 인증서A valid signing certificate
    유효한 서명 인증서를 만들거나 가져오는 방법에 대 한 자세한 내용은 패키지 서명을 위한 인증서 만들기 또는 가져오기를 참조 하세요.For more information about creating or importing a valid signing certificate, see Create or import a certificate for package signing.

  • SignTool.exeSignTool.exe
    SDK의 설치 경로를 기반으로 SignTool 는 WINDOWS 10 PC에 있습니다.Based on your installation path of the SDK, this is where SignTool is on your Windows 10 PC:

    • x86: C:\Program Files (x86) \Windows Kits\10\bin arch> \ < sdk 버전 >\x86\SignTool.exex86: C:\Program Files (x86)\Windows Kits\10\bin\<sdk version>\x86\SignTool.exe
    • x64: C:\Program Files (x86) \Windows Kits\10\bin arch> \ < sdk 버전 >\x64\SignTool.exex64: C:\Program Files (x86)\Windows Kits\10\bin\<sdk version>\x64\SignTool.exe

SignTool 사용Using SignTool

SignTool 를 사용 하 여 파일에 서명 하 고, 서명 또는 타임 스탬프를 확인 하 고, 서명을 제거할 수 있습니다.SignTool can be used to sign files, verify signatures or timestamps, remove signatures, and more. 앱 패키지에 서명 하기 위해 sign 명령에 초점을 둡니다.For the purpose of signing an app package, we will focus on the sign command. SignTool에 대 한 전체 정보는 SignTool 참조 페이지를 참조 하세요.For full information on SignTool, see the SignTool reference page.

해시 알고리즘 결정Determine the hash algorithm

SignTool 를 사용 하 여 앱 패키지 또는 번들에 서명 하는 경우 SignTool 에서 사용 되는 해시 알고리즘은 앱을 패키지 하는 데 사용한 것과 동일한 알고리즘 이어야 합니다.When using SignTool to sign your app package or bundle, the hash algorithm used in SignTool must be the same algorithm you used to package your app. 예를 들어 MakeAppx.exe 를 사용 하 여 기본 설정을 사용 하 여 앱 패키지를 만든 경우에는 MakeAppx.exe에서 사용 되는 기본 알고리즘 이므로 SignTool 을 사용할 때 SHA256을 지정 해야 합니다.For example, if you used MakeAppx.exe to create your app package with the default settings, you must specify SHA256 when using SignTool since that's the default algorithm used by MakeAppx.exe.

앱을 패키지 하는 동안 사용 된 해시 알고리즘을 확인 하려면 앱 패키지의 콘텐츠를 추출 하 고 AppxBlockMap.xml 파일을 검사 합니다.To find out which hash algorithm was used while packaging your app, extract the contents of the app package and inspect the AppxBlockMap.xml file. 앱 패키지의 압축을 풀고 압축을 푸는 방법을 알아보려면 패키지 또는 번들에서 파일 추출을 참조 하세요.To learn how to unpack/extract an app package, see Extract files from a package or bundle. Hash 메서드는 BlockMap 요소에 있으며 다음 형식을 갖습니다.The hash method is in the BlockMap element and has this format:

<BlockMap xmlns="http://schemas.microsoft.com/appx/2010/blockmap"
HashMethod="http://www.w3.org/2001/04/xmlenc#sha256">

이 표에서는 각 HashMethod 값과 해당 해시 알고리즘을 보여 줍니다.This table shows each HashMethod value and its corresponding hash algorithm:

HashMethod 값HashMethod value 해시 알고리즘Hash Algorithm
http://www.w3.org/2001/04/xmlenc#sha256 SHA256SHA256
http://www.w3.org/2001/04/xmldsig-more#sha384 SHA384SHA384
http://www.w3.org/2001/04/xmlenc#sha512 SHA512SHA512

참고

SignTool의 기본 알고리즘은 SHA1 ( MakeAppx.exe에서 사용할 수 없음) 이므로 항상 SignTool를 사용할 때 해시 알고리즘을 지정 해야 합니다.Since SignTool's default algorithm is SHA1 (not available in MakeAppx.exe), you must always specify a hash algorithm when using SignTool.

앱 패키지 서명Sign the app package

모든 필수 구성 요소가 있고 앱을 패키지 하는 데 사용 된 해시 알고리즘을 확인 한 후에는 서명할 준비가 된 것입니다.Once you have all of the prerequisites and you've determined which hash algorithm was used to package your app, you're ready to sign it.

SignTool 패키지 서명에 대 한 일반 명령줄 구문은 다음과 같습니다.The general command line syntax for SignTool package signing is:

SignTool sign [options] <filename(s)>

앱에 서명 하는 데 사용 되는 인증서는 .pfx 파일 이거나 인증서 저장소에 설치 해야 합니다.The certificate used to sign your app must be either a .pfx file or be installed in a certificate store.

.Pfx 파일의 인증서를 사용 하 여 앱 패키지에 서명 하려면 다음 구문을 사용 합니다.To sign your app package with a certificate from a .pfx file, use the following syntax:

SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.msix

/a옵션을 사용 하면 SignTool 에서 최상의 인증서를 자동으로 선택할 수 있습니다.Note that the /a option allows SignTool to choose the best certificate automatically.

인증서가 .pfx 파일이 아닌 경우 다음 구문을 사용 합니다.If your certificate is not a .pfx file, use the following syntax:

SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.msix

또는 < > 이 구문을 사용 하 여 인증서 이름 대신 원하는 인증서의 SHA1 해시를 지정할 수 있습니다.Alternatively, you can specify the SHA1 hash of the desired certificate instead of <Name of Certificate> using this syntax:

SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.msix

더 많은 예제는 SignTool을 사용 하 여 파일에 서명 을 참조 하세요.For more examples, see Using SignTool to Sign a File

일부 인증서는 암호를 사용 하지 않습니다.Note that some certificates do not use a password. 인증서에 암호가 없는 경우 < 샘플 명령에서 "/p Your password"를 생략 > 합니다.If your certificate does not have a password, omit "/p <Your Password>" from the sample commands.

유효한 인증서로 앱 패키지가 서명 되 면 패키지를 스토어에 업로드할 준비가 된 것입니다.Once your app package is signed with a valid certificate, you're ready to upload your package to the Store. 스토어에 앱을 업로드 하 고 제출 하는 방법에 대 한 자세한 지침은 앱 제출을 참조 하세요.For more guidance on uploading and submitting apps to the Store, see App submissions.