일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 코로나
- 보정명령
- Tutorial
- 소액임금체불
- vue
- 사업자계좌
- 체당금
- Java
- AWS
- Python
- Bootstrap
- reactnative
- Eclipse
- 개인사업자
- win32
- php
- Blade
- blockchain
- auth
- Laravel
- 코로나19
- 인민공원
- as후기
- Sentinel
- 이더리움
- javascript
- cartalyst
- 당사자표시정정신청서
- 전자소송
- elasticSearch
- Today
- Total
그냥 사는 이야기
인증서를 발급 받고 그걸로 code signing을 해보자~ 본문
Kernel Driver Code Signing
kernel driver 의 code signing을 위해 인증서를 신청했다. 처음에 인증을 어떻게 하는건지? 서명은 또 뭔지 등 아는바가 전혀 없어서 뭐부터 해야 할지 잘 몰랐다.
개념 이해
간단히 정리해보면 code signing을 하려면 인증서를 가지고 code sign을 한다.
- 인증서란? 그 회사가 실존하는 회사라는 것을 인증 해주는 것이다.
- code signing이란? 그 회사에서 만들었다라고 싸인 하는 거다.
2008 & vista x64 부터는 signing 안된 드라이버는 인증서 찾느라고 아예 부팅도 안된다. 물론 개발단계에서 테스트모드로는 정식인증을 받지 않고 테스트 해볼 수 있는데 이것은 여기에 언급하지는 않겠다. 필요한건 실제 배포용 코드 사이닝하는 것이다.
Code Signing을 하기 위한 절차
- 회사 인증서를 받자. 회사에 있으면 넘어가고
- 커널 드라이버 파일에 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
위의 절차를 마치고 나면 샘플.pfx 파일이 생성된다.
2-2. CertMgr.msc 에 등록하기
여기다가 1.번에서 생성된 인증서 파일을 개인용 부분에 등록 한다. 개인용 에서 마우스 오른쪽으로 [모든작업] - [가져오기] 해서 생성 되었던 pfx 인증서 파일이랑 password를 입력합니다. 그리고 등록하면 아래처럼 된다.
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
이 과정을 마친후의 드라이버 파일 사이즈를 보면 더 커진걸 알수 있다.
'Development > System' 카테고리의 다른 글
IcmpCreateFile() 의 handle은 꼭 IcmpCloseHandle()을 해주자 (0) | 2009.04.16 |
---|---|
wmic에서 원하는 data 필드의 값 추출하기 (0) | 2009.03.20 |
x86 or AMD64 architecture 구하면서 (0) | 2008.12.09 |
RunDll32를 사용한 install driver (0) | 2008.11.10 |
Driver Service StartType (0) | 2008.10.21 |