개발한 소프트웨어를 웹에 배포하여 사용자가 다운받아 설치하게 하거나, 백신 프로그램에 오탐지 되는 경우들을 위해, 소프트웨어에 코드사인(인증서로 서명)을 진행한다.
코드사인이란?
software에 디지털 서명(전자 서명)을 해서, 제작자 확인 및 프로그램이 변조되지 않았다는 것을 보장하는 것.
코드사인 인증서란, 설치하려는 프로그램이 신뢰할 수 있고 안전하다는 사실을 공인된 인증기관으로부터 입증받은 디지털 서명
코드사인을 하는 이유
윈도우의 스마트스크린 필터에서 자유로워지기 위해
웹에서 다운받은 프로그램을 실행 시, 명성치가 쌓이기 전까지 스마트 스크린 필터에 걸린다. (블루스크린이 뜨면서 위험한 파일이라고 실행하지 말라는 경고가 나온다.) => 프로그램이 바뀌면 매번 명성치를 다시 쌓아주어야 한다. => 경험상 약 30회정도 다운로드를 하고 개발자 센터에 신고를 하면 바로 명성치 반영이 되어 필터에 안걸리는 듯 하다. (평균 약 1일 소요)
코드사인을 하면, 해당 서명에 기반해 명성치가 쌓이게 되어 프로그램이 바뀌어도 명성치를 이어받을 수 있게 된다. (프로그램이 바뀔때마다 매번 명성치를 다시 쌓기 위해 다운로드 할 필요가 없음) => 경험상 서명에 기반한 명성치를 쌓아 필터에 안걸리게 되는 데 까지는 약 200회 정도 다운로드가 필요한 것이 아닌가 추측한다. (30회로는 안되었음.. 개별 파일보다 명성치를 쌓는 기준이 더 높은듯 싶다.)
백신 프로그램에 오탐지되는 경우를 위해
신규 소프트웨어가 백신 프로그램에 오탐지 되는 경우, 백신회사에 연락하여 탐지 제외 처리를 해주어야 한다.
이 역시 매번 프로그램이 바뀔때마다 다시 해주어야 하는데.. 코드사인을 하면 인증서 기반으로 탐지 제외 처리가 되어 한번만 처리 해주면 이후 같은 인증서로 서명한 프로그램은 오탐지 되지 않는다.
알면 간단한데, 처음 하는 경우 이것저것 찾아 헤맬 수 있어서 정리글을 올려본다.
코드사인 하는 전체 과정
1. 인증서 구매
인증서는 공인된 인증기관에서 구매하여 사용한다.
Sectigo(Comobo), digicert, ssl.com, VeriSign, Symantec 등.. 업체들이 굉장히 많다. 그 중 한군데를 선택하면 된다.
Warranty 등의 조건에 따라 가격이 달라지는데.. warranty 필요 없으면 저렴한 것을 구매해도 될 듯 싶다.
Windows 스마트 스크린 필터를 바로 해제해 준다고 EV 인증서라는 걸 팔기도 하는데.. 가격이 그냥 코드사인 인증서의 거의 3배다... 너무 상술이 심한듯...
일반 코드사인 인증서 구매해서 약 200회정도 다운로드 하니 명성치가 쌓여 스마트 스크린 필터에 안걸리더라.. (물론 추정치라 정확하진 않음.. 두 번 할게 아니라 검증을 해보지 못했음..) 급하지 않다면 일반 인증서 구매해서 명성 쌓아도 될듯 하다.
나는 개인적으로 Sectigo 인증서를 발급받았다. 국내에는 한국정보인증이라는 곳에서 구매 대행을 하는 듯 한데, 해외 대행 사이트를 이용하면 훨씬 저렴하다. (영어가 되면 채팅상담을 통해 도움을 많이 받을 수 있다.)
국내 대행업체 통하면 165,000/년 이었는데, 해외 대행 사이트를 이용해 $85/년 에 구매했다.(구매 시점 기준)
구매 신청을 하고 필요 서류들을 전송하면, 심사를 거치고 verification call을 받고 나서 인증서를 발급받을 수 있다. (약 1~2주 소요되는 듯)
순서는 간단한데.. spc 파일과 pvk 파일은 무엇이고 어디에 있는가?? 이걸 준비하는 과정이 아래와 같다..
코드사인에 필요한 파일 준비 과정
코드사인 인증서를 발급받았으면, 인증서로부터 SPC와 PVK 파일을 만들어 내야 한다. (인증기관에 따라서는 인증서와 함께 spc 파일을 보내주는 곳도 있는 듯 하다.)
SPC 파일이란?
OpenSSL 또는 Microsoft의 .NET Framework 파일 서명 도구 (Signcode.exe)와 같은 다양한 PKCS (공개 키 암호화 표준) 프로그램에서 생성 된 디지털 인증서. 개인 키를 사용하여 암호화 된 공개 키가 포함 된 디지털 서명이 포함되어 있다.
SPC 파일은 다운로드 된 파일 및 기타 웹 정보를 디지털로 서명하고 인증하는 데 사용된다.
PVK 파일이란?
개인 키 파일이다. 소프트웨어 개발자가 디지털 서명 응용 프로그램에 사용되며, 키를 작은 파일에 암호화 된 데이터의 세그먼트로 저장하고, 최종 사용자가 애플리케이션 번들을 인증 할 수 있도록 한다.
아래는 인증서가 저장소에만 설치되어 있는 경우, SPC와 PVK를 만들어 내는 과정이다.
1) 브라우저를 이용해 인증서를 PFX 파일로 내보내기
IE 실행 > 설정 > 인터넷 옵션 > 내용 > [인증서] 클릭 > 코드사인 인증서 선택 > [내보내기] 클릭
[예, 개인키를 내보냅니다] 에 체크 > 다음
개인 정보 교환 - PKCS #12(.PFX) 선택 (옵션은 기본으로 두면 된다.)
[암호]에 체크 후, 암호를 입력 후 [다음] 클릭
내보낼 파일을 저장할 경로와 이름을 입력 후 [다음] 클릭 > [마침] 클릭하면 인증서가 PFX 형식으로 저장된다.