그냥 사는 이야기

인증서를 발급 받고 그걸로 code signing을 해보자~ 본문

Development/System

인증서를 발급 받고 그걸로 code signing을 해보자~

없다캐라 2009. 2. 17. 16:49
반응형

Kernel Driver Code Signing

kernel driver 의 code signing을 위해 인증서를 신청했다. 처음에 인증을 어떻게 하는건지? 서명은 또 뭔지 등 아는바가 전혀 없어서 뭐부터 해야 할지 잘 몰랐다.

개념 이해

간단히 정리해보면 code signing을 하려면 인증서를 가지고 code sign을 한다.

  • 인증서란? 그 회사가 실존하는 회사라는 것을 인증 해주는 것이다.
  • code signing이란? 그 회사에서 만들었다라고 싸인 하는 거다.

2008 & vista x64 부터는 signing 안된 드라이버는 인증서 찾느라고 아예 부팅도 안된다. 물론 개발단계에서 테스트모드로는 정식인증을 받지 않고 테스트 해볼 수 있는데 이것은 여기에 언급하지는 않겠다. 필요한건 실제 배포용 코드 사이닝하는 것이다.

Code Signing을 하기 위한 절차

  1. 회사 인증서를 받자. 회사에 있으면 넘어가고
  2. 커널 드라이버 파일에 code signing 하자.

크게 보면 이렇게 나눌 수 있다.

1. 인증서 받기

한국전자인증에 전화로 물어봤다. VeriSign것으로 추천받고 신청했다. 사업자등록증, 회사명의가 있는 전화번호 영수증을 팩스로 보내주고 그 외 몇가지 정보를 보내주었다. 미국 VeriSign 지사에서 (본사는 호주) pin number가 왔고 다시 몇가지 요구한것을 했더니 myprivatekey.pvk 와 mycredentials.spc 이렇게 2개의 파일이 왔다. 하나는 인증서 파일이고 다른건 키 파일이란다. 

국내에도 yessign 제품이 요즘은 행사기간이라 하던데 직접 해보질 못해서 모르겠다.

2. Code Signing 하기

2-1. 인증서를 pfx파일로 변환

드라이버용 code-signing를 하기 위해서는 pfx 파일이 필요하다. 그래서 pvk를 pfx로 변환하는 pvk2pfx.exe 를 사용한다. pvk2pfx.exe는 ddk 설치하면 있다. pvk파일과 spc 파일을 입력하고 만들게될 pfx파일 이름을 "샘플" 이라고 입력하고 인증서 암호를 -pi와 -po 뒤에 준다.

pvk2pfx -pvk myprivatekey.pvk -pi 패스워드 -spc mycredentials.spc -pfx 샘플.pfx -po 패스워드 -f
pvk를 pfx로 변환

위의 절차를 마치고 나면 샘플.pfx 파일이 생성된다.

2-2. CertMgr.msc 에 등록하기

여기다가 1.번에서 생성된 인증서 파일을 개인용 부분에 등록 한다. 개인용 에서 마우스 오른쪽으로 [모든작업] - [가져오기] 해서 생성 되었던 pfx 인증서 파일이랑 password를 입력합니다. 그리고 등록하면 아래처럼 된다.

CertMgr.msc에서 확인할 수 있다.

2-3. ms의 cross-certificate 다운받아 준비해두기

왜 그러는지 잘 모르겠지만 VeriSign 업체용 ms 상호 인증서를 다운받아 둬야 한다. 상호 인증이라니깐 뭐 서로가 서로꺼는 자기꺼에서도 인증한다 이런건가?

code signing 할 때 같이 필요하니깐 있어야 된다. 참고로 MS 에서 상호 인증하는 회사가 몇개 있던데 yessign은 없더라. 안하길 잘한건가??? yessign도 무슨 방법이 있겠지.

이제 MSCV-VSClass3.cer 파일을 구해야 하는데 MS 사이트에서 받을 수 있다. 이 링크에서 맨 밑에 부근 VeriSign 업체 버전으로 다운받으면 된다. 준비는 끝났다. 서명하러 고고

2-4. code signing 하기

ddk를 설치하면 signtool.exe가 있다. 인증서는 이미 certmgr에 등록시켜놨으니깐 MSCV-VSClass3.cer와 signing할 드라이버 파일을 준비한다.

마지막 단계

signtool.exe sign /v /ac MSCV-VSClass3.cer /s my /n 인증서이름 /t http://timestamp.verisign.com/scripts/timestamp.dll 드라이버.sys

이 과정을 마친후의 드라이버 파일 사이즈를 보면 더 커진걸 알수 있다.

Comments