이번에 회사에서 digicert에서 EV 인증서를 구매했다.
회사 솔루션 구조상 시스템파일(.sys)을 유저의 컴퓨터에 설치해야하는데 Windows에서는 서명하지 않은 응용 프로그램에 대하여 '알 수 없는 사용자'라고 나오며, Windows 10 에서 보안이 강화되며 설치를 막는 경우도 생긴다.
또한 Windows 10 서부터는 SHA-1 알고리즘에 대한 지원을 없애고, SHA-2(SHA256) 알고리즘으로 서명한 응용 프로그램만을 지원한다. (SHA-1.. 고생했다... 이제는 굿-뻬이)
그리고 Windows에서 응용프로그램을 돌리고싶다면 "교차 인증"이란 것도 해줘야 한다.
즉 준비물은 다음과 같다.
1. 졸라 비싼 EV 인증서
2. Windows Hardware Center 에 로긴할 수 있는 MS 계정
1. digicert에서 국제배송된 인증서 토큰(usb)을 서명을 진행할 pc에 꽂는다.
메일로 전달된 crt 파일을 준비한다.
2. 프로그램을 빌드해서 나온 파일중 확장자가 sys와 pdb, inf인 것을 골라 따로 폴더에 담아준다(생략가능), ddf파일을 만든다.
.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={파일이름}.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
"{파일 위치}\{파일 이름}.inf"
"{파일 위치}\{파일 이름}.sys"
"{파일 위치}\{파일 이름}.pdb"
3. SYS파일을 SHA256으로 서명한다. (서명 방법 아래 명시)
3-1. cmd 창을 관리자 권한으로 켜서 다음과 같은 명령어를 입력한다.
"{signtool위치}\signtool.exe" sign /ac "{crt파일 위치}\DigiCert High Accurance EV Root CA.crt" /s my /n "{회사이름}" /tr http://timestamp.digicert.com /td sha256 /fd sha256 /v {sys파일 이름}.sys
3-2. 졸라 귀찮다.
4. 그리고 cmd 창을 관리자 권한으로 켜고, ddf파일이 있는 곳으로 가서 makecab -f "{ddf파일 이름}.ddf" 해서 cab 파일을 생성한다. 그럼 해당 폴더 하위에 disk1 폴더가 생성되고 거기에 압축된 cab파일 하나가 덩그러니 있다.
5. 4번처럼 cab파일도 SHA256으로 서명
6. 이제 Windows Hardware Center로 이동한다.
7. [하드웨어] -> [드라이버] 에서 좌측 상단의 [Submit new hardware] 버튼을 클릭하고
7-1. Product name에 식별할 수 있는 아무 이름이나 입력한다.
7-2. 서명한 cab 파일을 드래그앤 드롭으로 저 회색영역에 놓고, 업로드가 완료되면 Win10이나 Win10전버전에서 테스트 할 건지, 어떤 플랫폼의 교차서명을 할 건지를 선택한다. (나는 그냥 다 선택한다. 클라이언트가 아직 정해지지 않아서)
7-3. 끝나면 다음과 같이 화면이 변경되고, More을 클릭하여 서명된 파일들을 다운로드 받는다.
8. 다운로드 받은 파일을 압축해제하고 sys파일의 속성을 확인하여 SHA256으로 서명이 되었는지 확인하면 끝!
9. 귀찮음을 이겨낸 자신을 칭찬한다.
이렇게 응용프로그램 서명이 완료되었다. Windows가 점점 보안강도를 높이면서 방법이 많이 복잡해졌다.
signtool은 Windows SDK 설치하면 C:\Program Files(x86)\C:\Program Files (x86)\Windows Kits\10\bin 밑에 있는 10.xxxxx 폴더 내에서 x64 폴더 들어가면 됨;; 이거 찾느라고 짱났다ㅜㅠㅜ
그럼 모두다 화이팅!!
'2020년기록' 카테고리의 다른 글
[WPF] UI쓰레드 점유 문제로 인한 에러 발생과 해결 (0) | 2020.10.28 |
---|---|
.NET 5.0 달라진 점 (0) | 2020.09.28 |