앱 패키지 서명 인증서를 만드는 방법

중요

MakeCert.exe 더 이상 사용되지 않습니다. 인증서를 만드는 방법에 대한 현재 지침은 패키지 서명을 위한 인증서 만들기를 참조하세요.

 

windows 앱 패키지에 서명할 수 있도록 MakeCert.exe및Pvk2Pfx.exe 사용하여 테스트 코드 서명 인증서를 만드는 방법을 알아봅니다.

패키지된 Windows 앱을 배포하기 전에 디지털 서명해야 합니다. Microsoft Visual Studio 2012를 사용하여 앱 패키지를 만들고 서명하지 않는 경우 고유한 코드 서명 인증서를 만들고 관리해야 합니다. WDK(Windows 드라이버 키트)에서 MakeCert.exePvk2Pfx.exe 사용하여 인증서를 만들 수 있습니다. 그런 다음 인증서를 사용하여 앱 패키지에 서명할 수 있으므로 테스트를 위해 로컬로 배포할 수 있습니다.

알아야 하는 작업

기술

사전 요구 사항

지침

1단계: 패키지의 게시자 이름 확인

서명하려는 앱 패키지에서 만든 서명 인증서를 사용할 수 있도록 하려면 서명 인증서의 주체 이름이 해당 앱에 대한 AppxManifest.xml Identity 요소의 Publisher 특성과 일치해야 합니다. 예를 들어 AppxManifest.xml 다음이 포함되어 있다고 가정합니다.

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

다음 단계에서 MakeCert 유틸리티를 사용하여 지정하는 publisherName 매개 변수의 경우 "CN=Contoso Software, O=Contoso Corporation, C=US"를 사용합니다.

참고

이 매개 변수 문자열은 따옴표로 지정되며 대/소문자와 공백을 모두 구분합니다.

 

AppxManifest.xml Identity 요소에 대해 정의된 Publisher 특성 문자열은 인증서 주체 이름에 대한 MakeCert /n 매개 변수를 사용하여 지정한 문자열과 동일해야 합니다. 가능한 경우 문자열을 복사하여 붙여넣습니다.

2단계: MakeCert.exe 사용하여 프라이빗 키 만들기

MakeCert 유틸리티를 사용하여 자체 서명된 테스트 인증서 및 프라이빗 키를 만듭니다.

MakeCert /n publisherName /r /h 0 /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /e 
expirationDate /sv MyKey.pvk MyKey.cer

이 명령은 .pvk 파일에 대한 암호를 입력하라는 메시지를 표시합니다. 강력한 암호를 선택하고 프라이빗 키를 안전한 위치에 유지하는 것이 좋습니다.

이러한 이유로 앞의 예제에서 제안된 매개 변수를 사용하는 것이 좋습니다.

/r

자체 서명된 루트 인증서를 만듭니다. 이렇게 하면 테스트 인증서에 대한 관리가 간소화됩니다.

/h 0

인증서의 기본 제약 조건을 최종 엔터티로 표시합니다. 이렇게 하면 인증서가 다른 인증서를 발급할 수 있는 CA(인증 기관)로 사용되지 않습니다.

/Eku

인증서에 대한 EKU(고급 키 사용량) 값을 설정합니다.

참고

쉼표로 구분된 두 값 사이에 공백을 두지 마세요.

 

  • 1.3.6.1.5.5.7.3.3은 인증서가 코드 서명에 유효하다는 것을 나타냅니다. 인증서의 용도를 제한하려면 항상 이 값을 지정합니다.
  • 1.3.6.1.4.1.311.10.3.13은 인증서가 수명 서명을 준수한다는 것을 나타냅니다. 일반적으로 서명에 타임스탬프를 적용한 경우 인증서가 타임스탬프를 적용할 때 유효한 경우 인증서가 만료되더라도 서명은 유효한 상태로 유지됩니다. 이 EKU는 서명이 타임스탬프를 찍는지 여부에 관계없이 서명이 강제로 만료됩니다.

/전자

인증서의 만료 날짜를 설정합니다. expirationDate 매개 변수의 값을 mm/dd/yyyy 형식으로 제공합니다. 일반적으로 1년 미만인 테스트 목적으로 필요한 경우에만 만료 날짜를 선택하는 것이 좋습니다. 이 만료 날짜는 수명 서명 EKU와 함께 인증서가 손상되고 오용될 수 있는 기간을 제한하는 데 도움이 될 수 있습니다.

다른 옵션에 대한 자세한 내용은 MakeCert를 참조하세요.

3단계: Pvk2Pfx.exe 사용하여 개인 정보 교환(.pfx) 파일 만들기

Pvk2Pfx 유틸리티를 사용하여 MakeCert가 만든 .pvk 및 .cer 파일을 SignTool과 함께 사용하여 앱 패키지에 서명할 수 있는 .pfx 파일로 변환합니다.

Pvk2Pfx /pvk MyKey.pvk /pi pvkPassword /spc MyKey.cer /pfx MyKey.pfx [/po pfxPassword]

MyKey.pvkMyKey.cer 파일은 이전 단계에서 만든 MakeCert.exe 동일한 파일입니다. 선택적 /po 매개 변수를 사용하여 결과 .pfx에 대해 다른 암호를 지정할 수 있습니다. 그렇지 않으면 .pfx에 MyKey.pvk와 동일한 암호가 있습니다.

다른 옵션에 대한 자세한 내용은 Pvk2Pfx를 참조하세요.

설명

.pfx 파일을 만든 후 SignTool 과 함께 파일을 사용하여 앱 패키지에 서명할 수 있습니다. 자세한 내용은 SignTool을 사용하여 앱 패키지에 서명하는 방법을 참조하세요. 그러나 로컬 컴퓨터의 신뢰할 수 있는 인증서 저장소에 설치하기 전까지는 앱 패키지를 배포하기 위해 로컬 컴퓨터에서 인증서를 신뢰할 수 없습니다. Windows와 함께 제공되는 Certutil.exe를 사용할 수 있습니다.

WindowsCertutil.exe사용하여 인증서를 설치하려면

  1. 관리자 권한으로 Cmd.exe 실행합니다.

  2. 다음 명령을 실행합니다.

    Certutil -addStore TrustedPeople MyKey.cer
    

인증서가 더 이상 사용되지 않는 경우 인증서를 제거하는 것이 좋습니다. 동일한 관리자 명령 프롬프트에서 다음 명령을 실행합니다.

Certutil -delStore TrustedPeople certID

certID는 인증서의 일련 번호입니다. 인증서 일련 번호를 확인하려면 다음 명령을 실행합니다.

Certutil -store TrustedPeople

보안 고려 사항

로컬 컴퓨터 인증서 저장소에 인증서를 추가하면 컴퓨터의 모든 사용자의 인증서 신뢰에 영향을 줍니다. 앱 패키지를 테스트하려는 코드 서명 인증서를 신뢰할 수 있는 사람 인증서 저장소에 설치하는 것이 좋습니다. 더 이상 필요하지 않은 경우 해당 인증서를 즉시 제거하여 시스템 트러스트를 손상시키는 데 사용되지 않도록 합니다.

샘플

앱 패키지 샘플 만들기

개념

코드 서명 모범 사례

SignTool을 사용하여 앱 패키지에 서명하는 방법

앱 패키지 서명