패키지 서명용 인증서 만들기
이 문서에서는 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을 사용하여 앱 패키지 서명을 참조하세요.
보안 고려 사항
로컬 컴퓨터 인증서 저장소에 인증서를 추가하면 컴퓨터의 모든 사용자의 인증서 신뢰에 영향을 줍니다. 시스템 트러스트를 손상시키는 데 사용되지 않도록 더 이상 필요하지 않은 경우 해당 인증서를 제거하는 것이 좋습니다.