Makecert.exe(인증서 작성 도구)

업데이트: 2011년 4월

인증서 작성 도구를 사용하면 테스트 전용 X.509 인증서를 생성하고, 디지털 서명에 대한 공용 및 개인 키 쌍을 만들어 인증서 파일에 저장할 수 있습니다. 또한, 키 쌍을 지정된 게시자의 이름과 연결하고, 사용자 지정 이름을 해당 키 쌍의 공용 부분에 바인딩하는 X.509 인증서를 만들 수 있습니다.

Makecert.exe에는 기본 옵션과 확장 옵션이 있습니다. 기본 옵션은 인증서를 만드는 데 가장 일반적으로 사용되는 옵션이며, 확장 옵션을 사용하면 보다 많은 융통성이 제공됩니다.

이 도구를 사용하여 생성한 인증서 개인 키를 .snk 파일에 저장해서는 안 됩니다. 개인 키를 저장해야 하는 경우에는 키 컨테이너를 사용해야 합니다. 키 컨테이너에서 개인 키를 저장하는 방법에 대한 자세한 내용은 방법: 키 컨테이너에 비대칭 키 저장를 참조하십시오.

참고

인증서 저장소를 사용하여 인증서를 안전하게 저장해야 합니다.이 도구에서 사용하는 .snk 파일은 보호되지 않는 방법으로 개인 키를 저장합니다.새로 만들거나 가져온 .snk 파일을 사용하거나 제거할 때는 보안에 주의해야 합니다.

이 도구는 Visual Studio 및 Windows SDK와 함께 자동으로 설치됩니다. 도구를 실행하려면 Visual Studio 명령 프롬프트 또는 Windows SDK 명령 프롬프트(CMD 셸)를 사용하는 것이 좋습니다. 이러한 유틸리티를 사용하면 설치 폴더를 탐색하지 않고도 도구를 쉽게 실행할 수 있습니다. 자세한 내용은 Visual Studio 및 Windows SDK 명령 프롬프트을 참조하십시오.

  • 컴퓨터에 Visual Studio를 설치한 경우 작업 표시줄에서 Start, All Programs, Visual Studio, Visual Studio Tools 및 Visual Studio Command Prompt를 차례로 클릭합니다.

    또는

    컴퓨터에 Windows SDK를 설치한 경우 작업 표시줄에서 Start, All Programs 및 Windows SDK의 폴더를 차례로 클릭한 다음 Command Prompt(또는 CMD Shell)를 클릭합니다.

  • 명령 프롬프트에 다음과 같이 입력합니다.

makecert [options] outputCertificateFile

인수

설명

outputCertificateFile

테스트용 X.509 인증서가 작성되는 .cer 파일의 이름을 나타냅니다.

기본 옵션

Option

설명

-n 이름

주체의 인증서 이름을 지정합니다. 이 이름은 X.500 표준에 맞아야 합니다. 가장 간단한 방법은 이름 앞에 CN=을 붙여 큰따옴표로 묶는 것입니다(예: -n "CN=myName").

-pe

생성된 개인 키를 내보낼 수 있도록 표시합니다. 이렇게 하면 개인 키를 인증서에 포함할 수 있습니다.

-sk keyname

주체의 개인 키가 들어 있는 키 컨테이너 위치를 지정합니다. 키 컨테이너가 없으면 키 컨테이너가 새로 만들어집니다.

-sr location

주체의 인증서 저장소 위치를 지정합니다. 위치는 currentuser(기본값) 또는 localmachine일 수 있습니다.

-ss store

주체의 출력 인증서를 저장하는 인증서 저장소 이름을 지정합니다.

-# number

1에서 2,147,483,647까지의 일련 번호를 지정합니다. 기본값은 Makecert.exe에 의해 생성된 고유 값입니다.

-$ authority

인증서의 서명 기관을 지정합니다. commercial(상업적 소프트웨어 게시자가 사용하는 인증서의 경우)과 individual(개인 소프트웨어 게시자가 사용하는 인증서의 경우) 중 하나로 설정해야 합니다.

-?

이 도구의 명령 구문 및 기본 옵션 목록을 표시합니다.

-!

이 도구의 명령 구문 및 확장 옵션 목록을 표시합니다.

확장 옵션

Option

설명

-a 알고리즘

서명 알고리즘을 지정합니다. 알고리즘은 md5, sha1 (기본값), sha256, sha384 또는 sha512여야 합니다.

-b mm/dd/yyyy

유효 기간의 시작 날짜를 지정합니다. 기본값으로 현재 날짜가 지정됩니다.

-crl

인증서 대신 CRL(인증서 해지 목록)을 생성합니다.

-cy certType

인증서 종류를 지정합니다. 유효한 값은 end(최종 엔터티의 경우), authority(인증 기관의 경우)입니다.

-e mm/dd/yyyy

유효 기간의 끝 날짜를 지정합니다. 기본값은 12/31/2039 11:59:59 GMT로 설정됩니다.

-eku oid[,oid…]

향상된 키 용도 OID(개체 식별자) 목록을 쉼표로 구분하여 인증서에 삽입합니다.

-h number

해당 인증서 아래 트리의 최대 높이를 지정합니다.

-ic 파일

발급자의 인증서 파일을 지정합니다.

-ik keyName

발급자의 키 컨테이너 이름을 지정합니다.

-iky keytype

발급자의 키 형식이 signature(키가 디지털 서명에 사용 중임을 나타냄), exchange(키가 키 암호화 및 키 교환에 사용 중임을 나타냄) 또는 공급자 형식을 나타내는 정수 중 하나가 되도록 지정합니다. 기본적으로 교환 키에 1을, 서명 키에 2를 전달할 수 있습니다.

-in 이름

발급자의 인증서 일반 이름을 지정합니다.

-ip provider

발급자의 CryptoAPI 공급자 이름을 지정합니다. CryptoAPI 공급자 이름에 대한 자세한 내용은 –sp 옵션을 참조하십시오.

-ir location

발급자의 인증서 저장소 위치를 지정합니다. 위치는 currentuser(기본값) 또는 localmachine일 수 있습니다.

-is store

발급자의 인증서 저장소 이름을 지정합니다.

-iv pvkFile

발급자의 개인 키(.pvk) 파일을 지정합니다.

-iy type

발급자의 CryptoAPI 공급자 종류를 지정합니다. CryptoAPI 공급자 종류에 대한 자세한 내용은 –sy 옵션을 참조하십시오.

-l link

정책 정보에 연결합니다(예: URL).

-len number

생성된 키 길이를 비트 단위로 지정합니다.

-m number

인증서 유효 기간을 월 단위로 지정합니다.

-nscp

Netscape 클라이언트의 권한 부여 확장을 포함합니다.

-r

자체 서명 인증서를 만듭니다.

-sc 파일

주체의 인증서 파일을 지정합니다.

-sky keytype

제목의 키 형식이 signature(키가 디지털 서명에 사용 중임을 나타냄), exchange(키가 키 암호화 및 키 교환에 사용 중임을 나타냄) 또는 공급자 형식을 나타내는 정수 중 하나가 되도록 지정합니다. 기본적으로 교환 키에 1을, 서명 키에 2를 전달할 수 있습니다.

-sp provider

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider의 레지스트리 하위 키에 정의되어야 하는 주체의 CryptoAPI 공급자 이름을 지정합니다. –sp 및 –sy가 모두 제시되면 CryptoAPI 공급자의 형식은 공급자 하위 키의 Type 값에 해당해야 합니다.

-sv pvkFile

주체의 개인 키(.pvk) 파일을 지정합니다. 개인 키 파일이 하나도 없으면 새로 만들어집니다.

-sy type

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider Types의 레지스트리 하위 키에 정의되어야 하는 주체의 CryptoAPI 공급자 유형을 지정합니다. –sy 및 –sp가 모두 제시되면 CryptoAPI 공급자의 이름은 공급자 형식 하위 키의 Name 값에 해당해야 합니다.

-tbs

서명할 CRL 파일 또는 인증서를 지정합니다.

예제

다음 명령은 기본 테스트 루트에서 발급하는 테스트 인증서를 만들어 testCert.cer에 씁니다.

makecert testCert.cer

다음 명령은 기본 테스트 루트에서 발급하는 인증서를 만들어 인증서 저장소에 저장합니다.

makecert -ss testCertStore

다음 명령은 기본 테스트 루트에서 발급하는 인증서를 만들어 인증서 저장소에 저장합니다. 인증서가 currentuser 저장소에 명시적으로 저장됩니다.

makecert -ss testCertStore -sr currentuser

다음 명령을 사용하여 주체의 키 컨테이너 및 인증서 주체의 X.500 이름을 사용하여 테스트용 인증서를 만들고 이를 textXYZ.cer에 씁니다.

makecert -sk XYZ -n "CN=XYZ Company" testXYZ.cer 

다음 명령은 기본 테스트 루트에서 발급하는 인증서를 만들고 .pvk 파일을 만든 다음 인증서를 저장소와 파일로 출력합니다.

makecert -sv testCert.pvk -ss testCertStore testCert.cer

다음 명령은 기본 테스트 루트에서 발급하는 인증서를 만들고 키 컨테이너를 만든 다음 인증서를 저장소와 파일로 출력합니다.

makecert -sk myTestKey -ss testCertStore testCert.cer

다음 명령은 자체 서명 인증서를 만들고, 주체 이름으로 "CN=XYZ Company"를 지정하고, 유효 기간의 시작 및 끝을 지정하고, my 저장소에 키를 배치하고, 키를 지정 및 교환하고, 내보낼 수 있는 개인 키를 만듭니다.

makecert -r -pe -n "CN=XYZ Company" -b 01/01/2005 -e 01/01/2010 -sky exchange -ss my

다음 명령은 URL이 www.example.com인 웹 서버에서 SSL(Secure Sockets Layer)을 사용하는 웹 응용 프로그램을 테스트하는 데 사용할 수 있는 자체 서명된 인증서를 만듭니다. –eku 옵션으로 정의된 OID는 인증서를 SSL 서버 인증서로 식별합니다. 인증서는 my 저장소에 저장되어 있으며 사용자가 아닌 컴퓨터 수준에서 사용할 수 있습니다. 인증서의 개인 키를 내보낼 수 있으며 2010년 5월10일에서 2011년 12월 22일까지 유효합니다.

Makecert –r –pe –n CN="www.example.com" –b 05/10/2010 –e 12/22/2011 –eku 1.3.6.1.5.5.7.3.1 –ss my –sr localmachine -sky exchange –sp "Microsoft RSA SChannel Cryptographic Provider" –sy 12

다음 명령은 인증서를 만들어 저장소에 저장합니다. 다음 명령은 기본 테스트 루트를 사용하여 인증서를 만들어 저장소에 저장합니다. 두 번째 명령은 새로 만든 인증서를 사용하여 다른 인증서를 만들고 두 번째 인증서를 다른 저장소에 저장합니다.

makecert -sk myTestKey -ss testCertStore
makecert -is testCertStore -ss anotherTestStore

다음 명령은 인증서를 만들어 저장소에 저장합니다. 첫 번째 명령은 my 저장소에 인증서를 저장하고, 두 번째 명령은 새로 만든 인증서를 사용하여 다른 인증서를 만듭니다. my 저장소에 인증서가 두 개 이상 있기 때문에 두 번째 명령은 일반 이름을 사용하여 첫 번째 인증서를 식별합니다.

makecert -sk myTestKey -n "CN=XXZZYY" -ss my
makecert -is my -in "XXZZYY" -ss anotherTestStore

다음 명령은 인증서를 만들어 파일과 저장소에 저장합니다. 다음 명령은 기본 테스트 루트를 사용하여 인증서를 만들어 my 저장소와 파일에 저장합니다. 두 번째 명령은 새로 만든 testCert.cer 인증서를 사용하여 다른 인증서를 만듭니다. my 저장소에 인증서가 두 개 이상 있기 때문에 두 번째 명령은 인증서 파일 이름을 사용하여 첫 번째 인증서를 고유하게 식별합니다.

makecert -sk myTestKey -n "CN=XXZZYY" -ss my testCert.cer
makecert -is my -ic testCert.cer -ss anotherTestStore

참고 항목

참조

Cert2spc.exe(SPC 테스트 도구)

Visual Studio 및 Windows SDK 명령 프롬프트

기타 리소스

.NET Framework 도구

변경 기록

날짜

변경 내용

이유

2011년 4월

Visual Studio 및 Windows SDK 명령 프롬프트 사용에 대한 정보를 추가했습니다.

향상된 기능 관련 정보

2010년 5월

광범위하게 수정되었습니다.

고객 의견