Skip to content

생계형 개발자 수첩 ver4.0

이제 나이 먹어 강제로 4.0 버전업됨, 일인개발자임, 파키스탄식 코딩.. 오래된 코드도 다시 쓴다.

Tag: 배포

실행파일 디지털 서명하기 (프로그램 배포)

Posted on 2024년 7월 3일 - 2024년 7월 3일 by kimczip

개발된 프로그램을 타인에게 배포시 프로그램 서명이 되어 있지 않아 일부 백신에서 악성 프로그램으로 인식이 되는 문제가 발생하기도 한다.

다음의 절차로 위의 문제를 해결하고자 한다.

  1. 서명관련 프로그램 다운로드
  2. 디지털 인증서 (PVK, CER) 생성
  3. 디지털 인증서 등록 (SPC)
  4. 개인정보교환 파일 (PFX) 생성
  5. 배치파일로 자동 서명

1. 서명관련 프로그램 다운로드


서명관련한 프로그램 파일은 윈도우 SDK 다운로드페이지에서 내려 받아 설치하거나 윈도우 10 이상의 OS일 경우, C:\Program Files (x86)\Windows Kits\10\bin\10.0.XXXXX 폴더에서 서명에 관련된 프로그램을 찾을 수 있고, 아래 첨부 파일을 내려받아 압축해제 하여 사용해도 무방하다.

certDownload

2. 디지털 인증서 (PVK, CER) 생성

형식 : makecert -n “CN=[표시하고자 하는 개인 또는 단체명]” -r -sv [디지털인증서파일명].pvk [디지털인증서파일명].cer

makecert -n "CN=테스트" -r -sv  ca.pvk ca.cer

위의 명령어 이후,

창이 나오면서 비밀번호를 입력하도록 되어 있는데, 여기에 입력한 비밀번호는 앞으로의 절차에 반복적으로 나오니, 기억해 둘 것

3. 디지털 인증서 등록 (SPC)


위의 절차를 성공적으로 수행하였다면, 폴더 내에 *.cer 파일과 *.pvk 파일이 생성이 되어 있을 것이다. 다음으로 *.cer 파일로 *.spc 파일을 생성하는데 형식은 다음과 같다.

형식 : cert2spc.exe [디지털인증서파일명].cer [디지털인증서파일명].spc

cert2spc ca.cer ca.spc

cert2spc 실행 프로그램을 통하여, *.spc 파일이 생성된다.

다음은 인증서를 등록하는 과정인데, 다음과 같은 형식으로 입력한다.

형식 : certmgr.exe -add [디지털인증서파일명].cer -s -r localMachine root

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

등록 여부를 확인하려면 Edge나 익스플로러에서 인터넷옵션->내용->인증서->신뢰할 수 있는 루트 인증기관에 보면, 방금 등록한 [표시하고자 하는 개인 또는 단체명] 이 표시되며, 만약 표시되지 않는다면 가져오기 버튼을 통하여 수동으로 경로를 지정하여 파일 선택해서 가져오면 된다.

4. 개인정보교환 파일 (PFX) 생성

개인정보교환파일을 생성하기 위해 pvk2pfx 프로그램을 사용하는데, 형식은 다음과 같다.

형식 : pvk2pfx -pvk [디지털인증서파일명].pvk -pi [디지털인증서파일의 비밀번호] -spc [디지털인증서파일명].spc -pfx [개인정보교환파일].pfx -po [개인정보교환파일의 비밀번호]

pvk2pfx -pvk ca.pvk -pi **** -spc ca.spc -pfx ca.pfx -po ****

이후 *.pfx 파일이 생성되었다면 성공이다.

5. 배치파일로 자동 서명

실행 파일에 서명하고자 할 때, 다음의 형식의 명령어를 사용한다.

형식 : signtool sign /f [개인정보교환파일].pfx /p [비밀번호] /t http://timestamp.digicert.com /v [서명하고자하는 실행파일]

으로 명령어로 서명하거나 signtool signwizard를 통해 디지털 서명 마법사에 나온 절차대로 서명하면 된다.

아래 배치 파일은 서명하고자 하는 실행파일의 경로만 입력받으면 서명하도록 하는 배치 파일이다. 각자 환경에 맞게 커스텀해서 쓸것.

@echo off
setlocal

REM PFX 파일 경로와 비밀번호 설정
set PFX_FILE=ca.pfx
set PFX_PASSWORD=****
set TIMESTAMP_SERVER=http://timestamp.digicert.com

REM 사용자로부터 서명할 파일 이름 입력받기
set /p FILE_NAME="서명할 파일 이름을 입력하세요: "

REM 서명 명령어 실행
signtool sign /f %PFX_FILE% /p %PFX_PASSWORD% /tr %TIMESTAMP_SERVER% /td sha256 /fd sha256 /v %FILE_NAME%

REM 서명 확인
echo.
echo 서명이 완료되었습니다. 서명을 확인합니다.
signtool verify /pa /v %FILE_NAME%

echo.
echo 서명 과정이 완료되었습니다.
pause
endlocal

** 주의 : 경로명에 한글이 들어가 있을 경우, signtool에서 인식을 못하는 상황이 발생 할 수 있음

처리 결과

.

Posted in 4.0Tagged 배포1 Comment

버전

  • 3.0
  • 4.0

최근에..

  • 실행파일 디지털 서명하기 (프로그램 배포)
  • 자신의 PC에 막혀 있는 포트 검색
  • DB Table Column 이름 가져오기.
  • DLL 파일 PublicKeyToken 얻기
  • DSM 7.0에서 MariaDB 10 설정

Tags

10Gbps AMD Bitspower C# Command Control Corsair Crawling Exception F4-3200C14D-16GFX FLAREX G.Skill git gogs MariaDB MySQL NAS OpenCV Parallel PC-O9 rainmeter Ryzen scimitar Thermaltake UI Web WinForm 개발팁 개인사업자 광명시청 네트워크속도 데이터베이스 라이젠 랜선 랜케이블 리안리 메모리 명령프롬프트 수냉쿨링 수로 시놀로지 직구 커스텀쿨링 컴퓨터 퍼옴
Proudly powered by WordPress | Theme: micro, developed by DevriX.