개발/C#

[팁] 디지털 서명

FA1976 2018. 1. 27. 01:06

안녕하세요.

제가 프로그램을 만들어 배포하는데 다른 컴퓨터에서 실행하려고 하면 게시자없음으로 인해

악성 프로그램으로 인식되는 걸 알게되었습니다.

그래서 이를 해결하기 위해 디지털 서명을 해야한다는 것을 알게되었습니다.

인터넷에서 검색하던 중 간단하게 디지털 서명을 하는 방법을 알게되어 설명해보려고 합니다.


먼저 제가 첨부파일로 올린 cert.zip파일을 다운받아서 C:\에 압축을 해제합니다.

그러면 C:\에 cert폴더가 생깁니다.


이제 명령프롬프트를 관리자 권한으로 실행합니다.

명령프롬프트는 시작에 있습니다.


먼저 디렉토리를 C:\cert로 옮기기 위해 다음 명령을 입력합니다.

cd c:\cert


그다음 아래와 같이 입력하는데 NurimOnsemiro는 임의로 다르게 입력해도 됩니다.

makecert -n "CN=NurimOnsemiro" -r -sv  ca.pvk ca.cer


그러면 위와 같은 창이 나타납니다.

개인 키 암호를 임의로 입력합니다.

하지만 기억해두시기 바랍니다.


이제 cer과 pvk파일이 cert폴더에 생성되었습니다.


이제 다음과 같이 입력합니다.


cert2spc.exe ca.cer ca.spc


그러면 spc파일이 생성됩니다.


certmgr.exe -add ca.cer -s -r localMachine root


위와 같이 입력하면 ca.cer을 인증기관으로 등록절차가 완료됩니다.


이제 인터넷 익스플로러를 실행한 후, 메뉴바에 도구 - 인터넷옵션 - 내용 - 인증서 - 신뢰할 수 있는 루트 인증기관에 보면 방금 등록한 인증기관이 보입니다.


 


저는 NurimOnsemiro로 등록하여 제대로 된 것을 확인하였습니다.


이제 다시 명령프롬프트로 돌아가서 입력합니다.


signtool signwizard


 


그럼 다음과 같이 창이 생성됩니다.


디지털 서명을 할 파일을 C:\cert폴더에 넣은 후 


디지털 서명 마법사에서 해당 파일을 선택합니다.


 


그리고 다음을 누릅니다.


 


사용자 지정을 선택하고 다음을 누릅니다.


 


오른쪽에 파일에서 선택을 클릭합니다.


 


오른쪽에 X.509인증서로 바꾼 후에 ca.cer을 선택합니다.


 


이제 다음을 클릭합니다.


 


디스크의 개인 키 파일에서 ca.pvk파일을 선택합니다.

그리고 다음을 누릅니다.


 


처음에 입력한 암호를 입력합니다.


 


sha1을 선택하고 다음을 누릅니다.


 


별다른 설정없이 다음을 누릅니다.



설명이 필요하면 적고 없으면 다음을 누릅니다.



타임스탬프를 추가할 일이 없으면 다음을 누릅니다.

 

디지털 서명이 완료되었습니다.

마침을 눌러 암호를 한번더 입력하고 나면 완료됩니다.



이제 디지털 서명이 등록되었습니다.

인터넷을 통해 배포할 때 악성코드로 인식되지 않게되었습니다.

cert.zip



이상입니다.


----------------------------------------------------------------

해당 디지털 서명을 해도 익스플로러에서 악성코드로 인식되는 것이 확인되었습니다.

신뢰된 인증기관에서 발급된 것이 아니라 그런듯합니다.



출처: http://remocon33.tistory.com/385 [Onsemiro's Blog]