패키지 서명용 인증서 만들기

이 문서에서는 PowerShell 도구를 사용하여 앱 패키지 서명용 인증서를 만들고 내보내는 방법을 설명합니다. UWP 앱을 패키징하고 데스크톱 앱을 패키징하는 데 Visual Studio를 사용하는 것이 좋지만 Visual Studio를 사용하여 앱을 개발하지 않은 경우에도 수동으로 앱을 패키징할 수 있습니다.

필수 조건

  • 패키지된 앱 또는 패키지되지 않은 앱
    AppxManifest.xml 파일이 포함된 앱입니다. 최종 앱 패키지에 서명하는 데 사용할 인증서를 만드는 동안 매니페스트 파일을 참조해야 합니다. 앱을 수동으로 패키지하는 방법에 대한 자세한 내용은 MakeAppx.exe 도구를 사용하여 앱 패키지 만들기를 참조하세요.

  • PKI(공개 키 인프라) Cmdlet
    서명 인증서를 만들고 내보내려면 PKI cmdlet이 필요합니다. 자세한 내용은 공개 키 인프라 Cmdlet을 참조 하세요.

자체 서명된 인증서 만들기

자체 서명된 인증서는 스토어에 게시할 준비가 되기 전에 앱을 테스트하는 데 유용합니다. 이 섹션에 설명된 단계에 따라 자체 서명된 인증서를 만듭니다.

참고 항목

자체 서명된 인증서를 만들고 사용하는 경우 인증서를 설치하고 신뢰하는 사용자만 애플리케이션을 실행할 수 있습니다. 테스트를 위해 구현하기는 쉽지만 추가 사용자가 애플리케이션을 설치하지 못할 수 있습니다. 애플리케이션을 게시할 준비가 되면 신뢰할 수 있는 원본에서 발급한 인증서를 사용하는 것이 좋습니다. 이 중앙 집중식 신뢰 시스템은 애플리케이션 에코시스템에 악의적인 행위자로부터 사용자를 보호하기 위한 확인 수준이 있는지 확인하는 데 도움이 됩니다.

패키지된 앱의 제목 확인

인증서를 사용하여 앱 패키지에 서명하려면 인증서 의 "제목"이 앱 매니페스트의 "게시자" 섹션과 일치해야 합니다 .

예를 들어 앱의 AppxManifest.xml 파일의 "ID" 섹션은 다음과 같이 표시됩니다.

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

이 경우 "게시자"는 인증서를 만드는 데 사용해야 하는 "CN=Contoso Software, O=Contoso Corporation, C=US"입니다.

New-SelfSignedCertificate를 사용하여 인증서 만들기

New-SelfSignedCertificate PowerShell cmdlet을 사용하여 자체 서명된 인증서를 만듭니다. New-SelfSignedCertificate에는 사용자 지정을 위한 몇 가지 매개 변수가 있지만, 이 문서의 목적을 위해 SignTool에서 작동하는 간단한 인증서를 만드는 데 집중하겠습니다. 이 cmdlet의 예제 및 사용에 대한 자세한 내용은 New-SelfSignedCertificate를 참조 하세요.

이전 예제의 AppxManifest.xml 파일을 기반으로 다음 구문을 사용하여 인증서를 만들어야 합니다. 관리자 권한 PowerShell 프롬프트에서:

New-SelfSignedCertificate -Type Custom -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -KeyUsage DigitalSignature -FriendlyName "Your friendly name goes here" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")

일부 매개 변수에 대한 다음 세부 정보를 확인합니다.

  • KeyUsage: 이 매개 변수는 인증서를 사용할 수 있는 항목을 정의합니다. 자체 서명 인증서의 경우 이 매개 변수를 DigitalSignature설정해야 합니다.

  • TextExtension: 이 매개 변수에는 다음 확장에 대한 설정이 포함됩니다.

    • EKU(확장 키 사용): 이 확장은 인증된 공개 키를 사용할 수 있는 추가 용도를 나타냅니다. 자체 서명 인증서의 경우 이 매개 변수에는 인증서가 코드 서명에 사용됨을 나타내는 확장 문자열 "2.5.29.37={text}1.3.6.1.5.5.7.3.3"이 포함되어야 합니다.

    • 기본 제약 조건: 이 확장은 인증서가 CA(인증 기관)인지 여부를 나타냅니다. 자체 서명 인증서의 경우 이 매개 변수에는 인증서가 CA가 아닌 최종 엔터티임을 나타내는 확장 문자열 "2.5.29.19={text}"가 포함되어야 합니다.

이 명령을 실행하면 "-CertStoreLocation" 매개 변수에 지정된 대로 인증서가 로컬 인증서 저장소에 추가됩니다. 명령의 결과는 인증서의 지문도 생성합니다.

다음 명령을 사용하여 PowerShell 창에서 인증서를 볼 수 있습니다.

Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint

그러면 로컬 저장소의 모든 인증서가 표시됩니다.

인증서 내보내기

로컬 저장소의 인증서를 PFX(개인 정보 교환) 파일로 내보내려면 Export-PfxCertificate cmdlet을 사용합니다.

Export-PfxCertificate를 사용하는 경우 암호를 만들고 사용하거나 "-ProtectTo" 매개 변수를 사용하여 암호 없이 파일에 액세스할 수 있는 사용자 또는 그룹을 지정해야 합니다. "-Password" 또는 "-ProtectTo" 매개 변수를 사용하지 않으면 오류가 표시됩니다.

암호 사용량

$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText 
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password

ProtectTo 사용량

Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>

인증서를 만들고 내보낸 후에는 SignTool을 사용하여 앱 패키지에 서명할 준비가 된 것입니다. 수동 패키징 프로세스의 다음 단계는 SignTool을 사용하여 앱 패키지 서명을 참조하세요.

보안 고려 사항

로컬 컴퓨터 인증서 저장소에 인증서를 추가하면 컴퓨터의 모든 사용자의 인증서 신뢰에 영향을 줍니다. 시스템 트러스트를 손상시키는 데 사용되지 않도록 더 이상 필요하지 않은 경우 해당 인증서를 제거하는 것이 좋습니다.