이 문서에서는 증명 서명을 사용하여 드라이버에 서명하는 방법을 설명합니다.
비고
소매 고객을 대상으로 하는 증명 서명된 드라이버는 Windows 업데이트 게시되지 않습니다. CoDev 또는 Test Registry Key/Surface SSRK 옵션을 사용하여 시나리오를 테스트할 때 증명 서명된 드라이버에 대한 지원이 계속됩니다.
필수 조건
테스트 시나리오를 위해 증명 서명된 드라이버 에 대한 요구 사항을 읽고 이해합니다.
하드웨어 개발자 프로그램에 등록합니다. 등록되지 않은 경우 Microsoft Windows 하드웨어 개발자 프로그램 등록 단계를 따릅니다.
EV(확장 유효성 검사) 코드 서명 인증서가 있어야 합니다. 조직에 이미 코드 서명 인증서가 있는지 확인합니다.
기존 인증서가 있는 경우 인증서를 사용할 수 있도록 합니다.
조직에 인증서가 없는 경우 EV 인증서를 구매합니다.
(선택 사항) GitHub 사용할 수 있는 이 문서에 사용된 Echo 드라이버 샘플 다운로드합니다.
CAB 파일 만들기
다음 절차에서는 Echo 드라이버 샘플 사용하여 CAB 파일 제출을 만들어 단계를 설명합니다.
일반적인 CAB 파일 제출에는 다음 구성 요소가 포함되어야 합니다.
드라이버 자체(예: Echo.sys)입니다.
서명 프로세스를 용이하게 하기 위해 대시보드에서 사용하는 드라이버 INF(.inf) 파일입니다.
Echo.pdb와 같은 정보를 디버깅하는 데 사용되는 기호 파일입니다. .pdb 파일은 Microsoft 자동화된 크래시 분석 도구에 필요합니다.
카탈로그(.cat) 파일은 필수이며 회사 확인에만 사용됩니다. Microsoft 카탈로그 파일을 다시 생성하고 이전에 제출한 카탈로그 파일을 대체합니다.
비고
CAB 파일의 각 드라이버 폴더는 동일한 아키텍처 집합을 지원해야 합니다. 예를 들어 x86, x64를 지원하거나 x86 및 x64를 모두 지원해야 합니다.
드라이버 위치(\server\share)를 참조할 때 UNC 파일 공유 경로를 사용하지 마세요. CAB가 유효하려면 매핑된 드라이브 문자를 사용해야 합니다.
CAB 파일을 만들려면 다음 단계를 수행합니다.
서명할 이진 파일을 단일 디렉터리에 수집합니다. 이 예제에서는 폴더를
C:\Echo사용합니다.관리자 권한으로 명령 프롬프트 창을 엽니다.
MakeCab /?명령을 입력하여 명령 옵션을 확인합니다.C:\Echo> MakeCab /? Cabinet Maker - Lossless Data Compression Tool MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination] MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...] source File to compress. destination File name to give compressed file. If omitted, the last character of the source file name is replaced with an underscore (_) and used as the destination. /F directives A file with MakeCAB directives (may be repeated). Refer to Microsoft Cabinet SDK for information on directive_file. /D var=value Defines variable with specified value. /L dir Location to place destination (default is current directory). /V[n] Verbosity level (1..3).CAB 파일 DDF(디바이스 설명 프레임워크) 입력 파일을 준비합니다. 이 예제의 Echo 드라이버의 경우 입력은 다음 코드와 유사할 수 있습니다.
;*** Echo.ddf example ; .OPTION EXPLICIT ; Generate errors .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=0 .Set MaxCabinetSize=0 .Set MaxDiskFileCount=0 .Set MaxDiskSize=0 .Set CompressionType=MSZIP .Set Cabinet=on .Set Compress=on ;Specify file name for new cab file .Set CabinetNameTemplate=Echo.cab ; Specify the subdirectory for the files. ; Your cab file should not have files at the root level, ; and each driver package must be in a separate subfolder. .Set DestinationDir=Echo ;Specify files to be included in cab file C:\Echo\Echo.Inf C:\Echo\Echo.Sys다음 명령을 입력하여 CAB 파일을 만듭니다.
C:\Echo> MakeCab /f "C:\Echo\Echo.ddf명령의
MakeCab출력은 생성된 CAB 파일의 파일 수를 표시해야 합니다. 이 경우 두 개의 파일이 있어야 합니다.C:\Echo> MakeCab /f Echo.ddf Cabinet Maker - Lossless Data Compression Tool 17,682 bytes in 2 files Total files: 2 Bytes before: 17,682 Bytes after: 7,374 After/Before: 41.70% compression Time: 0.20 seconds ( 0 hr 0 min 0.20 sec) Throughput: 86.77 Kb/second하위 디렉터리에서
Disk1CAB 파일을 찾습니다. 파일 탐색기에서 CAB 파일을 선택하여 예상 파일이 포함되어 있는지 확인할 수 있습니다.
EV 인증서를 사용하여 CAB 파일 서명
다음 단계는 EV 인증서를 사용하여 CAB 파일에 서명하는 것입니다.
EV 인증서 공급자가 권장하는 프로세스를 사용합니다. 예를 들어 SHA256 타임스탬프로 CAB 파일에 서명하려면 다음 명령을 입력합니다.
C:\Echo> SignTool sign /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
중요합니다
업계 모범 사례를 사용하여 EV 코드 서명 프로세스의 보안을 관리해야 합니다.
파트너 센터에서 EV 서명된 CAB 파일 제출
CAB 파일에 서명하면 파트너 센터에서 파일을 제출할 준비가 된 것입니다.
파트너 센터 하드웨어 대시보드로 이동하여 자격 증명으로 로그인합니다.
새 하드웨어 제출을 선택합니다.
패키지 및 서명 속성 섹션에서 드라이버 제출의 제품 이름을 입력합니다. 이 이름을 사용하여 드라이버 제출 항목을 검색하고 정리하십시오.
비고
다른 회사와 드라이버를 공유할 때 이름이 표시됩니다.
두 테스트 서명 옵션을 모두 선택하지 않은 상태로 둡니다(선택되지 않음).
요청된 서명 옵션의 경우 드라이버 패키지에 포함할 서명을 선택합니다.
페이지 아래쪽에서 제출을 선택합니다.
서명 프로세스가 완료되면 하드웨어 대시보드에서 서명된 드라이버를 다운로드합니다.
드라이버가 제대로 서명되어 있는지 확인합니다.
드라이버가 아래 단계에 따라 올바르게 서명되었는지 확인합니다.
제출 파일을 다운로드한 후 드라이버 파일을 추출합니다.
관리자 권한으로 명령 프롬프트 창을 엽니다.
다음 명령을 입력하여 드라이버가 예상대로 서명되었는지 확인합니다.
C:\Echo> SignTool verify Echo.Sys다른 정보를 나열하고 SignTool이 여러 서명이 있는 파일의 모든 서명을 확인하도록 하려면 다음 명령을 입력합니다.
C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys드라이버의 EKU(고급 키 사용량)를 확인하려면 다음 단계를 완료합니다.
Windows 탐색기를 열고 이진 파일을 찾습니다. 파일을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.
디지털 서명 탭의 서명 목록에서 나열된 항목을 선택합니다.
세부 정보를 선택한 다음 인증서 보기를 선택합니다.
세부 정보 탭에서 향상된 키 사용을 선택합니다.
드라이버는 드라이버를 사임할 때 다음 프로세스를 사용합니다.
Microsoft SHA-2 포함 서명을 추가합니다.
고객이 자체 인증서로 서명한 드라이버 바이너리의 서명을 덮어씌우십시오.
SHA-2 Microsoft 인증서를 사용하여 새 카탈로그 파일을 만들고 서명합니다. 카탈로그는 고객이 제공하는 기존 카탈로그를 대체합니다.
Windows 드라이버 테스트
샘플 드라이버를 설치하고 Windows 테스트합니다.
관리자 권한으로 명령 프롬프트 창을 엽니다.
드라이버 패키지 폴더로 이동하여 다음 명령을 입력합니다.
C:\Echo> devcon install echo.inf root\ECHO드라이버 설치 프로세스에 다음 오류 메시지가 표시되지 않는지 확인합니다. "Windows 이 드라이버 소프트웨어의 게시자를 확인할 수 없습니다."
여러 드라이버를 사용하여 제출 만들기
다음 단계를 수행하여 동시에 여러 드라이버를 제출합니다.
각 드라이버에 대한 하위 디렉터리를 만듭니다.
하위 디렉터리를 참조하는 CAB 파일 DDF 입력 파일을 준비합니다. 이 예제의 경우 입력은 다음 코드와 유사할 수 있습니다.
;*** Submission.ddf multiple driver example ; .OPTION EXPLICIT ; Generate errors .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=0 .Set MaxCabinetSize=0 .Set MaxDiskFileCount=0 .Set MaxDiskSize=0 .Set CompressionType=MSZIP .Set Cabinet=on .Set Compress=on ;Specify file name for new cab file .Set CabinetNameTemplate=Echo.cab ;Specify files to be included in cab file ; First Driver .Set DestinationDir=DriverPackage1 C:\DriverFiles\DriverPackage1\Driver1.sys C:\DriverFiles\DriverPackage1\Driver1.inf ; Second driver .Set DestinationDir=DriverPackage2 C:\DriverFiles\DriverPackage2\Driver2.sys C:\DriverFiles\DriverPackage2\Driver2.inf