윈도우즈 EXE 파일 서명
Windows(윈도우)에서 "알 수 없는 게시자"의 응용 프로그램에 대해 최종 사용자에게 경고하지 않도록 서명하고 싶은 EXE 파일이 있습니다.저는 Windows 개발자가 아닙니다.해당 애플리케이션은 화면 보호기 애플리케이션을 생성하는 애플리케이션에서 생성된 화면 보호기입니다.따라서 저는 파일이 생성되는 방식에 영향을 미치지 않습니다.
저는 이미 Verisign 또는 instantssl.com 와 같은 CA의 코드 서명 인증서가 필요하다는 것을 알게 되었습니다.EXE 파일에 서명하기 위해 필요한 작업이 무엇인지 이해할 수 없습니다.간단한 설명은 무엇입니까?
Mel Green의 답변은 저를 더 발전시켰지만, signtool은 어떤 경우에 어떤 인증서를 사용할지 지정하기를 원합니다.이것이 나에게 효과가 있는지 테스트하기 위해 어떻게든 무료 코드 서명 인증서를 얻을 수 있습니까?
또한 어떤 인증서 종류가 올바른 인증서인지 지정하십시오.대부분의 사이트는 "코드 서명"만 언급하고 사용자가 실제로 컴파일한 서명 응용프로그램에 대해 이야기합니다.이것은 저에게는 해당되지 않습니다.
앱에 서명하는 방법
Microsoft의 SignTool을 사용하여 앱에 서명합니다.
Windows SDK의 일부로 다운로드합니다. 전체 SDK를 설치하지 않고도 SignTool을 설치할 수도 있습니다.설치가 완료되면 다음과 같이 명령줄에서 SignTool을 사용할 수 있습니다.
signtool sign /a /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 MyFile.exe
은 서할것다니에 서명할 입니다.MyFile.exe
사용된 명령줄 옵션에 대한 설명:
/a
에서는 가장 오랫동안 유효한 인증서를 자동으로 사용합니다.인증서가 없으면 SignTool에 오류가 표시됩니다./fd SHA256
파일 서명에 SHA-256 다이제스트 알고리즘을 사용합니다.SHA256을 사용하는 것이 권장되며 기본 SHA1 다이제스트 알고리즘보다 안전한 것으로 간주됩니다./tr http://timestamp.digicert.com
서명된 앱에 타임스탬프를 추가합니다.이것은 인증서 자체가 이미 만료된 후에도 서명이 유효하게 유지될 수 있기 때문에 매우 중요합니다.에 대한 주장./tr
옵션은 타임스탬프 URL입니다. 이 무료 RFC 3161 타임스탬프 서버 목록에서 타임스탬프 URL을 사용할 수 있습니다./td SHA256
타임스탬프 서명에 SHA-256 다이제스트 알고리즘을 사용합니다.이전과 마찬가지로 SHA256을 사용하는 것이 권장되며 더 안전한 것으로 간주됩니다.
자체 서명된 인증서를 사용하는 방법 및 시기
실행 파일 서명 프로세스를 테스트하는 데 사용할 수 있는 인증서를 가져오려면 MakeCert를 사용하여 자체 서명된 인증서를 만들 수 있습니다.
자체 인증서를 생성하고 실행 파일에 서명하는 데 사용한 후에는 UAC가 자체 서명된 인증서를 신뢰할 수 있는 원본으로 수락하려면 해당 인증서를 컴퓨터의 신뢰할 수 있는 루트 CA로 수동으로 추가해야 합니다.이 작업은 자신의 개발 컴퓨터에서만 수행할 수 있습니다.대부분의 사용자는 정당한 이유로 새 루트 CA 설치를 허용하지 않기 때문에 일반적으로 사용자의 컴퓨터에서 이 작업을 수행할 수 없습니다.
인식할 수 없는 앱 경고를 제거하는 방법
앱이 서명된 경우에도 앱을 실행하려고 할 때 다음 경고 메시지가 표시될 수 있습니다.
Microsoft Defender SmartScreen에서 인식할 수 없는 앱을 시작하지 못했습니다.이 앱을 실행하면 PC가 위험해질 수 있습니다.
이 경고를 피하는 방법은 다소 복잡한 주제입니다.Microsoft SmartScreen 경고에 대한 전체 그림과 이에 대해 수행할 수 있는 작업 및 알아야 할 작업을 보려면 다음 답변을 참조하십시오.
저는 직장에서도 같은 시나리오를 경험했고 여기 우리의 결과가 있습니다.
먼저 인증서를 가져와 컴퓨터에 설치하면 인증 기관에서 인증서를 구입하거나 makecert를 사용하여 인증서를 생성할 수 있습니다.
다음은 두 가지 옵션의 장단점입니다.
인증서 구입
- 장점
- CA(인증 기관)에서 발급한 인증서를 사용하면 Windows가 CA의 인증서를 사용하는 모든 컴퓨터의 "알 수 없는 게시자"의 응용 프로그램에 대해 최종 사용자에게 경고하지 않습니다(OS는 일반적으로 Manny CA의 루트 인증서와 함께 제공됨).
- 단점:
CA에서 인증서를 발급받는 데 비용이 듭니다.
가격은 https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html 및 https://www.digicert.com/code-signing/ 를 참조하십시오.
Makecert를 사용하여 인증서 생성
- 찬성:
- 단계는 간단하며 인증서를 최종 사용자와 공유할 수 있습니다.
- 단점:
- 최종 사용자는 옵션이 아닐 수도 있는 클라이언트에 따라 수동으로 인증서를 설치해야 합니다.
- makecert로 생성된 인증서는 일반적으로 생산이 아닌 개발 및 테스트에 사용됩니다.
실행 파일 서명
원하는 파일에 서명하는 두 가지 방법이 있습니다.
시스템에 설치된 인증서 사용
signtool.exe sign /a /s MY /sha1 sha1_thumbprint_value /t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\filename.dll"
- 이 있는 이를하여 이에예서 SHA1 지를사에 합니다.
C:\filename.dll
- 이 있는 이를하여 이에예서 SHA1 지를사에 합니다.
인증서 파일 사용
signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"
- 이예에서는인있사습다니고하용를증서▁▁the다있니습▁in▁using▁are이▁this▁we고사를 사용하고 있습니다.
c:\path\to\mycert.pfx
호를사여하용암▁the▁password로pfxpassword
에c:\path\to\file.exe
- 이예에서는인있사습다니고하용를증서▁▁the다있니습▁in▁using▁are이▁this▁we고사를 사용하고 있습니다.
서명 테스트
방법 1: 사인 도구 사용
이동: 시작 > 실행
형CMD
> 확인을 클릭
에서 "" " " " " " " 합니다.signtool
합니다.
다음을 실행합니다.signtool.exe verify /pa /v "C:\filename.dll"
방법 2: Windows 사용
서명된 파일을 마우스 오른쪽 버튼으로 클릭합니다.
속성 선택
디지털 서명 탭을 선택합니다.서명은 서명 목록 섹션에 표시됩니다.
이것이 당신에게 도움이 되기를 바랍니다.
출처:
https://www.digicert.com/kb/code-signing/signcode-signtool-command-line.htm
https://learn.microsoft.com/en-us/windows/win32/seccrypto/makecert
오픈 소스 개발을 하는 경우 Certum에서 코드 서명 인증서를 받을 수 있습니다.1년 넘게 인증서를 사용하고 있는데 Windows에서 알 수 없는 게시자 메시지가 제거됩니다.가격 기록:
- 2005 - €14.00
- 2019 - €25.00
- 2022 - €69.00
서명 코드에 관한 한 저는 서명 도구를 사용합니다.다음과 같은 스크립트에서 exe:
signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe
Linux 상자에서 실행 파일에 서명해야 하는 경우 Mono 프로젝트 도구의 기호 코드를 사용하는 것도 방법입니다.Ubuntu에서 지원됩니다.
ASP의 잡지 ASPects에는 코드 서명 방법에 대한 자세한 설명이 있습니다(기사를 읽으려면 회원이어야 합니다).http://www.asp-shareware.org/ 를 통해 다운로드할 수 있습니다.
다음은 직접 테스트 인증서를 만드는 방법에 대한 설명입니다.
이것 또한 흥미로울 수 있습니다.
이것은 질문에 대한 직접적인 대답은 아니지만, 조만간 어떤 개별 프로그래머가 지갑에 손을 넣었을 것이기 때문에 밀접하게 관련되어 있고 유용하기를 바랍니다.
따라서 가격별로 정렬된 EV(확장 유효성 검사) 코드 서명 인증서의 가격:
SSL 정보
연간 240달러(클릭 미끼 가격)
연간 287달러(실제 가격, 쿠폰 사용 후)
K 소프트웨어.그물
1년 $350 + ($50 숨겨진 수수료!)
2년간 $600
3년간 750달러
OV: 연간 84달러(3년간)
저는 그들에게서 전기차를 구입했습니다.몇 년 후에 저는 OV를 구입했습니다.eToken은 USB 스틱으로 전송되었습니다.판독기가 필요 없습니다.그들은 단지 중개인일 뿐입니다.결국 코모도(섹티고)에서 실제로 구매하게 됩니다.Sectigo는 매우 느립니다.두 번째 검증에는 꼬박 두 달이 걸렸습니다.전화기 확인에 여러 번 실패했습니다.모든 것이 거추장스러웠습니다.기술 지원팀은 무슨 일이 일어나고 있는지 전혀 알지 못했습니다. 아마도 파키스탄에 있는 한 남자가 대본을 읽고 있을 것입니다.
Sklep.certum.플
1년차 379유로
(폴란드 사용자 전용인 것 같습니다)
LeaderSsl.de
1년차 364유로 또는 307유로(+19%V)AT)
(OV 69+VAT)
Sectigo.com
1년 $499 USD
3년간 $897(USD
GlobalSign.com
1년간 총 410달러
2년 총액 760달러
3년 총액 950달러
Digicert.com
1년: 600달러(104달러)
3년: ?
symantec.com
1년: 700달러
3년: 터무니없이 비쌉니다.
더 많은 가격:
cheapsslsecurity.com 코드 서명 EV
cheapsslsecurity.com SSL 전용!
EV 대 OV
EV를 사용하면, 사업자의 공공 전화 번호, 사업 기간, 등록 번호 및 관할 구역을 확인할 뿐만 아니라 도메인 사기 확인, 블랙리스트 확인 및 요청자의 고용 상태를 인증하기 위한 전화 통화를 포함한 9가지 단계가 추가로 필요합니다.
일부에서는 OV로 서명된 프로그램을 Microsoft에 제출하여 바이러스 백신을 검사할 것을 권장합니다.
더 싼 가격을 찾으시면 알려주시면 목록을 업데이트해드리겠습니다!
인증서 사용 방법?
exe 파일에 서명하기 위해 MS signtool.exe를 사용했습니다.이를 위해 1GB 용량의 비대해진 MS Windows SDK를 다운로드해야 합니다.다행히 설치하지 않으셔도 됩니다.ISO를 열고 "Windows SDK Signing Tools-x86_en-us.msi"를 추출하기만 하면 됩니다.400KB밖에 되지 않습니다.
그런 다음 작은 스크립트 파일을 만들었습니다.
prompt $
echo off
cls
copy "my.exe" "my.bak.exe"
"c:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe" sign /fd SHA256 /f MyCertificate.pfx /p MyPassword My.exe
pause
__
EXE 파일에 서명한 후 어떻게 되었습니까?
그래서 돈을 좀 투자한 후에, 저는 마침내 EXE 파일에 서명했습니다.그 후에 무슨 일이 일어났습니까?아무것도...Win10에서 "실행하지 않음" 단추가 있는 동일한 "신뢰할 수 없는" 창이 나타납니다.계속 버튼은 여전히 보이지 않습니다.제 프로그램은 하루에 400번 정도 다운로드 됩니다.다운로드가 얼마나 필요한지 지켜보겠습니다.
참조 https://steward-fu.github.io/website/driver/wdm/self_sign.htm
참고: 서명 도구.마이크로소프트 SDK에서 exe
처음으로 (개인 인증서를 만들기 위해)
Makecert -r -pe -ss YourName YourName.cer certmgr.exe -add YourName.cer -s -r localMachine root
이후(앱에 서명 추가)
signtool sign /s YourName YourApp.exe
Windows 10에서 개발 중이지만 Microsoft의 서명 도구가 없는 경우에도 또 다른 옵션이 있습니다.exe가 설치되면 Windows의 Ubuntu에서 Bash를 사용하여 앱에 서명할 수 있습니다.다음은 요약입니다.
https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/
다음 링크를 사용하여 .exe(설정/설치 프로그램) 파일에 서명합니다(Microsoft 설정 서명 도구를 사용하지 않고 exe/설정 파일에 서명).
https://ebourg.github.io/jsign/ #파일
샘플 명령:
jsign --keystore keystore.jks --alias alias --storepass password MyInstaller.exe
나를 위해 일했습니다 :)
언급URL : https://stackoverflow.com/questions/252226/signing-a-windows-exe-file
'programing' 카테고리의 다른 글
HEAD를 이전 위치로 다시 이동하려면 어떻게 해야 합니까?(헤드 분리) & 커밋 실행 취소 (0) | 2023.05.14 |
---|---|
VB 단위의 수율.그물 (0) | 2023.05.14 |
Pip은 Ubuntu의 Python 3.10에서 작동하지 않습니다. (0) | 2023.05.14 |
iPhone 시뮬레이터 정리 (0) | 2023.05.14 |
Postgres의 기본 암호는 무엇입니까? (0) | 2023.05.14 |