JHB의 프로그래밍 삽질기

Vista에서 드라이버 배포하는 방법 본문

PROGRAMMING/Driver

Vista에서 드라이버 배포하는 방법

roter 2010.04.22 17:54


수 많은 삽질 끝에 드디어 드라이버 파일에 코드 사이닝을 해냈다..

우와.. XP와는 다르다..
나는 *.sys 파일에 코드 사이닝 하면 되는줄 알았다.
아니였다.. Vista에서는 *.cat 파일 (catalog 파일)을 생성하여 inf와 sys를 다 등록 한 후 cat 파일에 Authenticode(Code Signing)해주어야 한다.

문서를 읽어보면 Server 2003 이후에는 코드 사이닝 개념이 생겨서 신뢰 기관으로 등록 하는 경우 Warning Dialog가 뜨지 않는 다고.. (XP의 경우에는 WHQL해줬어야 했다)

요하튼.. 비스타에서 드라이버 배포의 A to Z를 봅시다.

필요한 것.
1. WDK
2. SignTool
3. Inf2Cat

뭐.. 결국 SignTool와 Inf2Cat은 안에 WDK안에 있긴 하지만.. 뭐 쨌든
WDK는 http://connect.microsoft.com에서 받는다는 것은 누구나 알죠?
이거 말고 MakeCat이니 Signability를 쓰라느니.. 다 개 뻘짓이더군요.. 걍 Inf2Cat이면 돼요..

(자료들은 http://technet.microsoft.com/ko-kr/library/dd919238%28WS.10%29.aspx 을 참조하였습니다.)

요하튼.. 드라이버 배포를 위해선 cat파일을 만들어 줘야 합니다.
어떻게 만드느냐..

바로 x86 Free Build Environment 를 실행해서 inf2cat을 해줘야 합니다. (저는 cmd에서 inf2cat 한다고 겁내 삽질했네요..)

inf2cat을 하기 위해서 선행할 작업이 있습니다.

우리가 설치할 *.INF 의 [Version] 섹선을 손봐야 하는데요.
CatalogFile=이름.cat

을 넣어줘야 합니다.

여튼.. 저걸 넣어주고 Vista and Server2003용 x86 Free Build Environment을 실행해 주고 inf2cat을 합니다.

inf2cat은 이렇게..

inf2cat /driver:c:\toaster\device /os:Vista_x86

해주면 됩니다.. 참고로 경로 중에 한글이름이 있거나 띄어쓰기가 포함 돼있으면 안되는거같더군요.. (제가 '바탕 화면'을 참조해서 정확히는 띄어쓰기 문제인지 한글이름 문제인지는 모르겠습니다 ;;)
그럼.. 지가 알아서 inf 파일 참조해서 이름.cat 파일을 생성합니다.

이제 생성된 cat파일 있죠? 그거에다가 Authenticode(코드 사이닝) 해주면 끝입니다.. 디지털 서명이라고 하면 될까요.. 여튼...
중요한건.. sys파일에 서명하는게 아닙니다.. cat파일에 서명하는거지...

서명 하는 방법은 다른 글에 적어놨으니까 알아서 찾아보세요... 라고 적기엔 너무 무책임하니 걍 간단히 링크 ~_~
http://www.roter.pe.kr/entry/Windows-Vista-응용프로그램-드라이버에-코드-사이닝-하기

입니다.. 모두 화팅!!
2 Comments
  • 프로필사진 메지샤라 2010.08.18 11:30 신고 안녕하세요, 너무 답답한 마음에 검색하다가...알게되었습니다...혹시나 지금 제가 처한 에러상황을 아실까 하여...질문드려보려 합니다.
    64비트 OS에서 device driver사용을 위해서 driver파일(**.sys)에 코드사이닝을 하려고 하는데요..
    pfx파일 만들고 등록도 하고..그리고서 signtool로 등록하려고 하는데...계속 오류가 나네요...

    포스트하신 내용을 보니 이전번에 이 부분에 관해서 해보신듯 한데...
    signtool error no certificates were found that met all the given criteria
    혹시 위의 에러에 대해서 보신적이 없으신가요..(지금 몇일째 헤매고 있는데 거의 미칠지경이네요..;;)

    그리고...제가 보았던 포스트 내용들에는 sys파일에 코드사이닝까지만 하면되는 것이었는데요..

    위의 절차가 단지 코드사이닝에 들어가는내용인가요...아니면 윈도우 로고인증(WHQL)전체 내용중에 포함되는 내용인지요..

    너무 답답한 마음에 한번 문의드려봅니다..
  • 프로필사진 BlogIcon roter 2010.08.18 15:08 신고 안녕하세요~
    에러메세지는 왜 뜨는지는 모르겠는데.. 우선 베리사인에서 코드사이닝 인증서는 발급 받으셨는지요?

    비스타의 경우 드라이버 사이닝이

    1. WHQL
    2. 코드 사이닝 인증(베리싸인 이용)

    이렇게 있습니다.

    WHQL할 경우 드라이버 설치시 아무 경고 메세지 없이 설치 되며 단지 코드 사이닝 인증만 할 경우 Publisher가 누구인지 밝히면서 설치할 수 있게 됩니다.
    xp의 경우 sys파일에만 코드사이닝 하면 됐던걸로 알고있는데요, vista의 경우에는 카탈로그파일이라서 inf2cat으로 카탈로그 파일을 만드셔서 그 파일에다가 코드사인 하셔야 됩니다.

    자세한 사항은
    http://www.microsoft.com/whdc/
    에 가시면 볼 수 있습니다~ 한국어 페이지가 있으니까 '한국어'눌러서보셔요
댓글쓰기 폼