적용 대상: Windows 7, Windows Server 2008 R2
장치 드라이버 패키지에 서명하려면 코드 서명 인증서가 있어야 합니다. 사용 가능한 여러 인증서 유형 및 인증서를 얻는 방법에 대한 자세한 내용은 이 가이드의 끝 부분에 있는 추가 리소스 섹션을 참조하십시오. 이 가이드에서는 테스트 목적으로 사용할 수 있는 인증서를 만드는 방법을 보여 줍니다.
중요 |
---|
이 섹션에서 만들어 사용하는 인증서는 32비트 버전의 Windows에서 32비트 드라이버에만 사용할 수 있습니다. 64비트 버전의 Windows용 장치 드라이버를 사용하는 방법은 이 가이드 앞부분의 장치 드라이버 서명 및 준비 요구 사항 섹션 시작 부분에 있는 "중요 참고"를 참조하십시오. |
단계 개요: 장치 드라이버 패키지에 서명
다음 단계에서는 장치 드라이버 패키지에 서명하는 기본 프로세스를 보여 줍니다.
1단계: 서명에 사용할 디지털 인증서 만들기
이 단계에서는 샘플 Toaster 드라이버 패키지 서명에 사용할 수 있는 인증서를 만듭니다.
먼저 인증서 MMC 스냅인을 열어 현재 인증서를 확인합니다.
중요 |
---|
certmgr.msc를 실행하여 스냅인을 열지 마십시오. 이렇게 하면 기본적으로 인증서 저장소의 현재 사용자 버전이 열립니다. 대신 이 절차에서는 인증서를 컴퓨터 계정에 대한 저장소에 배치해야 합니다. |
인증서 MMC 스냅인을 열려면
- 시작, 실행을 차례로 클릭하고 실행 상자에 다음을 입력합니다. mmc
- 콘솔1 – [콘솔 루트]에서 파일을 클릭하고 스냅인 추가/제거를 클릭합니다.
- 스냅인 추가/제거의 사용 가능한 스냅인 목록에서 인증서를 선택한 다음 추가를 클릭합니다.
- 인증서 스냅인에서 컴퓨터 계정을 선택하고 다음을 클릭합니다.
- 컴퓨터 선택 대화 상자에서 로컬 컴퓨터: (이 콘솔이 실행되고 있는 컴퓨터)를 클릭한 다음 마침을 클릭합니다.
- 확인을 클릭하여 스냅인 추가/제거 페이지를 닫습니다.
- 인증서 스냅인이 콘솔에 나타납니다.
이제 인증서를 만들 수 있습니다.
참고 |
---|
이전 x86 Free Build Environment 명령 프롬프트 창은 MakeCert 도구에 필요한 관리자 권한으로 실행되지 않았으므로 사용할 수 없습니다. 관리자 권한 없이 MakeCert를 실행하려고 하면 오류 코드 0x5(액세스 거부)가 표시되고 실패합니다. |
MakeCert 도구를 사용하여 디지털 인증서를 만들려면
- 시작 메뉴에서 x86 Free Build Environment를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택하여 관리자 권한으로 x86 Free Build Environment 명령 프롬프트를 엽니다.
- x86 Free Build Environment 명령 프롬프트에 다음 명령을 한 줄로 입력합니다. 여기서는 공간 제한에 맞추고 읽기 쉽도록 하기 위해 이 명령을 여러 줄로 표시합니다.
makecert -r -n "CN=MyCompany - for test use only" -ss MyCompanyCertStore -sr LocalMachine
- -r
인증서가 CA에서 서명되지 않고 "자체 서명"되도록 지정합니다. "루트" 인증서라고도 합니다. - -n "CN=회사 이름 - 테스트 전용"
이 새로운 인증서와 연결된 이름을 지정합니다. 인증서와 해당 목적을 분명하게 식별하는 인증서 이름을 사용하는 것이 좋습니다. - -ss 회사 인증서 저장소
새 인증서가 배치되는 인증서 저장소의 이름을 지정합니다. - -sr 로컬 컴퓨터
-ss 옵션으로 만든 인증서 저장소가 기본 사용자 단위 저장소 대신 컴퓨터 단위 저장소에 있도록 지정합니다.
- -r
- 새 인증서가 올바르게 만들어졌는지 확인합니다. 앞에서 열어둔 인증서 MMC 스냅인에서 인증서(로컬 컴퓨터), MyCompanyCertStore, 인증서 노드를 차례로 엽니다.
- 오른쪽 창에서 MyCompany - for test use only를 두 번 클릭합니다.
- 새 인증서를 보여 주는 인증서 대화 상자가 나타납니다.
- 확인을 클릭하여 인증서 페이지를 닫습니다.
2단계: 신뢰할 수 있는 루트 인증 기관 저장소에 인증서 추가
이 단계는 MakeCert를 사용하여 만든 인증서와 같이 로컬에서 만든 인증서에 필요합니다. 이러한 인증서는 신뢰할 수 있는 루트 인증 기관 인증서로 직접 추적될 수 없습니다.
Windows에서 컴퓨터 단위 신뢰할 수 있는 루트 인증 기관 저장소의 신뢰할 수 있는 인증서와 비교하여 인증서의 유효성을 검사할 수 없으므로 기본적으로 새 인증서는 "신뢰할 수 없음"으로 표시됩니다. Windows에서는 각 인증서가 유효한 인증서로 간주되려면 이 저장소의 인증서로 추적될 수 있어야 합니다.
타사 인증 기관에서 만든 상용 인증서의 경우, 해당 CA의 루트 인증서가 이미 컴퓨터 단위의 신뢰할 수 있는 루트 인증 기관 저장소에 있기 때문에 이 단계가 필요하지 않습니다.
참고 |
---|
사용자 단위의 신뢰할 수 있는 루트 인증 기관 저장소에 배치된 인증서는 장치 드라이버 패키지 서명의 유효성을 검사하지 않습니다. |
신뢰할 수 있는 루트 CA 인증서 저장소에 테스트 인증서를 추가하려면
- 인증서 스냅인에서 MyCompany - for test use only를 마우스 오른쪽 단추로 클릭하고 복사를 클릭합니다.
- 신뢰할 수 있는 루트 인증 기관을 마우스 오른쪽 단추로 클릭하고 붙여넣기를 클릭합니다.
- 신뢰할 수 있는 루트 인증 기관 및 인증서를 열고 해당 인증서를 두 번 클릭합니다.
- "신뢰할 수 없음" 메시지가 더 이상 나타나지 않는 것을 확인하고 확인을 클릭하여 인증서를 닫습니다.
3단계: 컴퓨터 단위의 신뢰할 수 있는 게시자 저장소에 인증서 추가
새 인증서를 사용하여 장치 드라이버의 올바른 서명을 확인하려면 컴퓨터 단위 신뢰할 수 있는 게시자 저장소에도 인증서를 설치해야 합니다.
참고 |
---|
사용자 단위의 신뢰할 수 있는 게시자 저장소에 배치된 인증서는 장치 드라이버 패키지 서명의 유효성을 검사할 수 없습니다. |
신뢰할 수 있는 게시자 인증서 저장소에 테스트 인증서를 추가하려면
- 인증서 스냅인에서 인증서를 마우스 오른쪽 단추로 클릭하고 복사를 클릭합니다.
- 신뢰할 수 있는 게시자를 마우스 오른쪽 단추로 클릭하고 붙여넣기를 클릭합니다.
- 신뢰할 수 있는 게시자 및 인증서를 열고 인증서 복사본이 폴더에 있는지 확인합니다.
- 확인을 클릭하여 인증서를 닫습니다.
4단계: 인증서를 사용하여 장치 드라이버 패키지에 서명
샘플 Toaster 장치 및 드라이버를 사용하는 경우 또는 조직에서 모든 장치 드라이버가 조직 자체 인증서로 서명되어야 하는 정책을 구현하려는 경우 다음 단계에 따라 기존 서명을 자체 서명으로 바꿉니다.
참고 |
---|
공급업체에서 이미 서명된 드라이버 패키지를 사용하는 경우 드라이버 패키지에 이미 .inf 파일에서 참조되는 유용한 카탈로그 파일이 있습니다. 이 경우 아래의 처음 두 단계를 건너뛰고 Signtool을 사용하여 카탈로그 파일에 서명에서 시작할 수 있습니다. |
장치 드라이버에 서명하려면 다음을 수행해야 합니다.
드라이버 패키지 .inf 파일 준비
.inf 파일은 드라이버 패키지의 설치를 제어합니다. 장치 드라이버 패키지에 대한 디지털 서명은 .cat 파일 이름 확장명을 가진 카탈로그 파일에 있습니다. 드라이버 패키지 설치에 사용하는 .inf 파일에는 .cat 파일에 대한 참조가 포함되어 있어야 합니다.
또한 이 가이드에서 사용된 샘플 Toaster 장치 드라이버에 대해 장치 드라이버의 타임스탬프와 버전 번호도 변경해야 합니다.
공동 설치 프로그램은 장치 드라이버 제조업체에서 제공하는 코드로, 드라이버 패키지 설치 프로세스 중에 호출될 수 있으며 설치 프로세스 중에 설치 프로그램에서 다양한 기능을 실행할 수 있게 해줍니다. 샘플 Toaster 장치 드라이버에서 공동 설치 프로그램은 사용자가 설치할 수 있는 선택적 프로그램을 표시합니다. 이러한 시나리오에는 Toaster 공동 설치 프로그램이 필요하지 않으므로 이 절차 중에 .inf 파일에서 해당 프로그램을 삭제합니다.
참고 |
---|
드라이버 패키지가 공급업체에서 이미 서명된 경우 .inf 파일에 이미 유효한 카탈로그 파일에 대한 참조가 있으므로 이 절차를 건너뛸 수 있습니다. |
드라이버 패키지 .inf 파일을 준비하려면
- 관리자 권한으로 x86 Free Build Environment 명령 프롬프트에서 드라이버 패키지가 들어 있는 폴더로 변경합니다. 다음 명령을 입력합니다.
cd c:\toaster\device
- 다음 명령을 입력합니다.
Notepad toastpkg.inf
- [Version] 섹션을 찾습니다. 원래 파일에는 다음 줄이 포함되어 있습니다.
CatalogFile.NTx86 = tostx86.cat CatalogFile.NTIA64 = tostia64.cat CatalogFile.NTAMD64 = tstamd64.cat
- 이 세 줄을 삭제하고 다음 한 줄로 바꿉니다.
CatalogFile=toaster.cat
- [Version] 섹션에서 DriverVer=로 시작하는 줄을 찾습니다. 줄이 다음과 같이 나타나도록 날짜 및 버전 번호를 바꿉니다.
DriverVer=05/01/2009,9.9.9.9
- [Toaster_Device.NT.CoInstallers] 섹션에서 다음 세 줄을 찾아 삭제합니다.
[Toaster_Device.NT.CoInstallers] AddReg=CoInstaller_AddReg CopyFiles=CoInstaller_CopyFiles
- 변경 내용을 저장하고 메모장을 닫습니다.
드라이버 패키지에 대한 카탈로그 파일 만들기
Inf2Cat 도구를 실행하여 샘플 Toaster 드라이버 패키지에 대한 서명되지 않은 카탈로그 파일을 만듭니다. Inf2Cat은 드라이버 패키지 .inf 파일을 구문 분석하고 .inf 파일에 참조된 모든 파일에 대해 고유한 해시를 생성합니다. 패키지를 받는 사람은 해시를 사용하여 받은 파일이 서명된 파일과 똑같은지 확인합니다.
참고 |
---|
이전 버전의 WDK에서는 Signability라는 도구를 사용했습니다. 이 도구는 이제 더 이상 사용되지 않으며 Inf2Cat으로 대체되었습니다. |
사용하는 드라이버 패키지가 공급업체에서 서명된 경우 카탈로그 파일이 이미 있으므로 새 카탈로그 파일을 만들 필요가 없습니다. 이 절차를 건너뛰고 다음 절차인 SignTool을 사용하여 카탈로그에 서명으로 이동하여 공급업체 서명을 자체 서명으로 바꿉니다.
참고 |
---|
Inf2Cat 도구는 관리자 권한으로 명령 프롬프트에서 실행해야 합니다. |
드라이버 패키지에 대한 카탈로그 파일을 만들려면
- 관리자 권한으로 x86 Free Build Environment 명령 프롬프트에 다음 명령을 입력합니다.각 매개 변수의 의미는 다음과 같습니다.
- /driver:c:\toaster\device
드라이버 패키지에 대한 .inf 파일의 위치를 지정합니다. 전체 폴더 경로를 지정해야 합니다. 현재 폴더를 나타내는 '.' 문자는 여기서 작동하지 않습니다. - /os:7_x86
32비트 버전의 Windows 7을 운영 체제로 식별합니다. 지원되는 운영 체제와 해당 코드의 전체 목록을 보려면 inf2cat /? 명령을 실행합니다.
- /driver:c:\toaster\device
- inf2cat /driver:c:\toaster\device /os:7_x86
- inf2cat 도구의 출력을 검토합니다.
Signability test complete ...................... Errors: None Warnings: None Catalog generation complete. C:\toaster\device\toaster.cat
- 전체 .cat 파일을 검토합니다. 명령 프롬프트에 다음을 입력합니다.
start toaster.cat
- 보안 카탈로그 탭을 클릭합니다. 카탈로그 항목 섹션에는 드라이버 패키지의 .inf 파일, .sys 파일 및 .dll 파일에 대해 각각 하나씩, 총 세 개의 항목이 있습니다. 각 항목을 클릭하고 항목 정보 섹션에서 패키지의 각 파일에 대한 항목이 파일 무결성을 확인하는 데 사용할 수 있는 "지문"(해시)과 함께 포함되어 있는지 확인합니다.
- 확인을 클릭하여 보안 카탈로그 대화 상자를 닫습니다.
SignTool을 사용하여 카탈로그 파일에 서명
이제 카탈로그 파일이 있으므로 SignTool 프로그램를 사용하여 파일에 서명할 수 있습니다.
샘플 Toaster 장치 드라이버의 사용 여부에 관계없이 이 절차에 따릅니다.
중요 |
---|
드라이버 패키지에 서명하는 경우 서명에 타임스탬프를 만드는 옵션을 포함해야 합니다. 이 타임스탬프는 서명이 만들어진 시기를 지정합니다. 인증서가 만료되거나 보안상 해지된 경우 만료 또는 해지 전에 만들어진 서명만 유효합니다. 타임스탬프가 서명에 포함되어 있지 않으면 Windows에서 패키지가 만료 또는 해지 전이나 후에 서명되었는지 확인할 수 없으며 서명을 거부합니다. |
SignTool을 사용하여 카탈로그 파일에 서명하려면
- 관리자 권한으로 x86 Free Build Environment 명령 프롬프트에서 다음 명령을 모두 한 줄로 입력합니다. 여기서는 공간 제한에 맞추고 읽기 쉽게 하기 위해 이 명령을 여러 줄로 표시합니다.
SignTool sign /s MyCompanyCertStore /n “MyCompany – for test use only” /t http://timestamp.verisign.com/scripts/timestamp.dll toaster.cat
- /s 회사 인증서 저장소
SignTool이 /n 매개 변수로 지정된 인증서를 검색하는 인증서 저장소의 이름을 지정합니다. - /n "회사 이름 – 테스트 전용"
패키지 서명에 사용할 인증서의 이름을 지정합니다. SignTool에서 저장소의 다른 이름과 구분할 수 있을 만큼 충분한 이름 부분을 포함해야 합니다. 이 이름에 공백이 포함되어 있으면 큰따옴표로 이름을 둘러싸야 합니다. - /t 타임스탬프 서비스 경로
승인된 인증 기관의 타임스탬프 서비스 경로를 지정합니다. 상용 공급업체에서 인증서를 구입한 경우 해당 공급업체가 서비스 경로를 제공해야 합니다. - toaster.cat
사용할 카탈로그 파일의 경로와 파일 이름을 지정합니다.
Successfully signed and timestamped: C:\toaster\device\toaster.cat
- /s 회사 인증서 저장소
- 서명된 카탈로그 파일을 보고 확인하려면 명령 프롬프트에 다음과 같이 입력합니다.
start toaster.cat
- 이제 보안 카탈로그 속성 페이지의 머리글에 보안 카탈로그가 "유효함"으로 표시되고 서명 보기 단추를 사용할 수 있습니다.
- 서명 보기를 클릭하고 패키지에 추가한 서명의 세부 정보를 확인합니다. 카탈로그 파일의 다른 세부 정보는 변경되지 않았습니다.
참고 : http://technet.microsoft.com/ko-kr/library/dd919238(WS.10).aspx#bkmk_sub4a
'프로그래머의 길 > 윈도우 디바이스 드라이버' 카테고리의 다른 글
32bit 드라이버 64bit 드라이버로 변경 .inf (0) | 2011.10.10 |
---|