Windows EXE 파일 서명


180

나는이 EXE의 I Windows가 "알 수없는 출판사"에서 응용 프로그램에 대한 최종 사용자에게 경고하지 않도록 서명을 좋아한다고 파일을. 저는 Windows 개발자가 아닙니다. 해당 응용 프로그램은 화면 보호기 응용 프로그램을 생성하는 응용 프로그램에서 생성 된 화면 보호기입니다. 따라서 파일 생성 방법에는 영향을 미치지 않습니다.

이미 Verisign 또는 instantssl.com 과 같은 CA코드 서명 인증서 가 필요하다는 것을 이미 알고 있습니다. 내가 이해하지 못하는 것은 EXE 파일에 서명하기 위해 (가능한 경우)해야 할 일입니다. 간단한 설명은 무엇입니까?

Mel Green의 대답이 더 나아 갔지만 signtool은 어떤 경우에 사용할 인증서를 지정하기를 원합니다. 이것이 어떻게 작동하는지 테스트 할 수있는 무료 코드 서명 인증서를 얻을 수 있습니까?

또한 올바른 인증서 종류를 지정하십시오. 대부분의 사이트는 "코드 서명"만 언급하고 실제로 사용자가 컴파일 한 응용 프로그램에 서명하는 것에 대해 이야기합니다. 이것은 나에게 해당되지 않습니다.


3
궁금한 점은 인증서를 구매하기 위해 얼마를 지불해야합니까?
InTheNameOfScience

2
:) 아마 가치가 대략 $ 400 년을 @Rigel
샤란 Arumugam

@SharanArumugam : WHAAT ?????? Microsfot가 싸고 무료 인 소프트웨어에 반대하는 것과 같습니다!
InTheNameOfScience

답변:


116

Microsoft의 Sign Tool을 사용해보십시오.

Windows Server 2008 및 .NET 3.5 용 Windows SDK의 일부로 다운로드합니다. 일단 다운로드하면 다음과 같이 명령 행에서 사용할 수 있습니다.

signtool sign / a MyFile.exe

사용 가능한 "최고의 인증서"를 사용하여 단일 실행 파일에 서명합니다. 인증서가 없으면 SignTool 오류 메시지가 표시됩니다.

또는 시도해 볼 수 있습니다.

간판 간판

그러면 응용 프로그램 서명 과정을 안내하는 마법사가 시작됩니다. (이 옵션은 Windows SDK 7.0 이후에는 사용할 수 없습니다.)


실행 파일 서명 프로세스를 테스트하는 데 사용할 수있는 인증서를 받으려면 .NET 도구 Makecert를 사용할 수 있습니다 .

인증서 작성 도구 (Makecert.exe)

자체 인증서를 작성하고 실행 파일에 서명하는 데 사용한 인증서는 UAC 가 인증서를 실행 하는 사용자에게 신뢰할 수있는 소스에서 온 것으로 알리기 위해 수동으로 인증서를 시스템의 신뢰할 수있는 루트 CA로 추가해야합니다 . 중요 합니다. ROOT CA로 인증서를 설치하면 사용자 개인 정보가 위험 해집니다. 델과 무슨 일이 있었는지보세요. 코드와 Windows를 통해이 작업을 수행하는 데 대한 자세한 정보는 다음을 참조하십시오.

잘하면 그것은 이것을 시도하는 사람에게 더 많은 정보를 제공합니다!


별도의 질문으로 작동하는 워크 플로 : stackoverflow.com/questions/84847/…
The_Ghost

4
"이 도구는 Visual Studio와 함께 자동으로 설치됩니다. 도구를 실행하려면 개발자 명령 프롬프트 (또는 Windows 7의 Visual Studio 명령 프롬프트)를 사용하십시오." msdn.microsoft.com/ko-kr/library/8s9b9yaz(v=vs.110).aspx
Westy92

signtool에서 사용하는 인증서에 대해 매우 궁금합니다.
Overdrivr

1
"signwizard"옵션을 사용할 수 없습니다 윈도우 SDK 7.0 이후
오마르리스

Makecert는 더 이상 사용되지 않으며 대신 PowerShell cmdlet New-SelfSignedCertificate를 사용하여 테스트 인증서를 만들어야합니다. stackoverflow.com/a/51443366/38117911의 세부 사항 (The_Ghost와 관련된 질문에 대한 답변).
Alexander Revo

35

나는 직장에서 같은 시나리오를 가지고 있었고 여기에 우리의 발견이 있습니다.

가장 먼저 할 일은 인증서를 가져 와서 컴퓨터에 설치하는 것입니다. 인증 기관 에서 인증서를 구입 하거나 makecert를 사용하여 인증서를 생성 할 수 있습니다 .

다음은 두 가지 옵션의 장단점입니다

인증서 구매

  • 찬성
    • CA (Certificate Authority)에서 발급 한 인증서를 사용하면 Windows에서 CA의 인증서를 사용하는 컴퓨터의 "알 수없는 게시자"의 응용 프로그램에 대해 최종 사용자에게 경고하지 않습니다 (OS는 일반적으로 매니 CA의 루트 인증서와 함께 제공됨) )
  • 단점 :
    • CA에서 인증서를 얻는 데 드는 비용이 있습니다

Makecert를 사용하여 인증서 생성

  • 장점 :
    • 단계가 쉽고 최종 사용자와 인증서를 공유 할 수 있습니다
  • 단점 :
    • 최종 사용자는 컴퓨터에 옵션이 아닌 클라이언트에 따라 수동으로 인증서를 설치해야합니다.
    • makecert로 생성 된 인증서는 일반적으로 프로덕션이 아닌 개발 및 테스트에 사용됩니다.

실행 파일 서명

원하는 파일에 서명하는 방법에는 두 가지가 있습니다.

  • 컴퓨터에 설치된 인증서 사용

    signtool.exe 부호 / a / s MY / sha1 sha1_thumbprint_value / t http://timestamp.verisign.com/scripts/timstamp.dll / v "C : \ filename.dll"

    • 이 예에서는 개인 폴더에 저장된 인증서를 SHA1 지문 (인증서에서 제공)과 함께 사용하여 "C : \ filename.dll"에있는 파일에 서명합니다.
  • 인증서 파일 사용

    signtool 표시 / tr http://timestamp.digicert.com / td sha256 / fd sha256 / f "c : \ path \ to \ mycert.pfx"/ p pfxpassword "c : \ path \ to \ file.exe"

    • 이 예에서는 "c : \ path \ to \ file.exe"파일에 서명하기 위해 인증서 "c : \ path \ to \ mycert.pfx"와 비밀번호 pfxpassword를 사용하고 있습니다.

서명 테스트

방법 1 : signtool 사용

시작> 실행 유형 CMD로 이동> 확인을 클릭하십시오. 명령 프롬프트에서 signtool이있는 디렉토리를 입력하십시오. 다음을 실행하십시오.

signtool.exe는 / pa / v "C : \ filename.dll"을 확인합니다.

방법 2 : Windows 사용

서명 된 파일을 마우스 오른쪽 단추로 클릭 한 다음 속성 선택 디지털 서명 탭을 선택하십시오. 서명이 서명 목록 섹션에 표시됩니다.

이것이 당신을 도울 수 있기를 바랍니다

출처 :


@PhilLab을 도울 수있어 기쁘다
Erick Castrillo

$$$ 견적도 제공하십시오. 감사!
InTheNameOfScience

1
@WeGoToMars 나는이 문서가 당신이 도움이 될 수 있습니다 생각 cheapsslsecurity.com/sslproducts/codesigningcertificate.html 여기 또는 digicert.com/code-signing
에릭 Castrillo

31

당신은 얻을 수 없는 싼 코드 서명 인증서를 Certum에서 오픈 소스 개발을하고 있다면.

1 년 이상 인증서를 사용해 왔으며 Windows에서 알 수없는 게시자 메시지를 제거합니다.

서명 코드까지는 다음과 같은 스크립트에서 signtool.exe 를 사용 합니다.

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe

3
더 이상 무료로 보이지 않지만 훨씬 저렴합니다. € 14
hultqvist

1
더 이상 무료로 보이지 않습니다. 내가 방금 갱신했는데 아무것도 지불하지 않았습니다. 내가 할아버지가되었을 수도 있고 내부 프로세스가 망가 졌을 수도 있습니다. 그들의 웹 사이트는 확실히 복잡합니다.
리 리처드슨


Certum은 자사의 오픈 소스 인증서가 Microsoft SmartScreen 필터 메시지를 제거하지 않을 것이라고 말합니다.
Markus Laire

17

ASP의 잡지 ASPects에는 코드 서명 방법에 대한 자세한 설명이 있습니다 (기사를 읽으려면 회원이어야 함). http://www.asp-shareware.org/를 통해 다운로드 할 수 있습니다 .

다음 은 자신 만의 테스트 인증서를 만드는 방법에 대한 설명 링크 입니다.

이것은 또한 흥미로울 수 있습니다.


7
부록 4 년 뒤 : 코모도는 2012 년 초 (언젠가 손상되었다 blogs.comodo.com/it-security/data-security/... ) 및 사용자 에이전트의 많은 지금 코모도 루트 권한으로 인증서를 거부 할 수 있도록
A. 윌슨

8
Comodo는 2013 년 중반에도 여전히 위험한 베팅이며, '사용자 에이전트'는 Microsoft / Windows가 악명 높은 '알 수없는 게시자'메시지를 표시할지 여부를 결정하는 사람임을 분명히 의미합니다.
Dan W

죄송합니다. 1) 날짜가 지났고 2) 현재 주제가 아닌 것으로 판명 된 서비스 권장 사항이 제거되었습니다 (1 때문에).
deceze



4

또 다른 옵션은 Windows 10에서 개발 중이지만 Microsoft의 signtool.exe가 설치되어 있지 않은 경우 Windows의 Ubuntu에서 Bash를 사용하여 앱에 서명 할 수 있습니다. 다음은 요약입니다.

https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/


osslsigncode에서 사용할 수 cygwin있으므로 이미 사용하고 있다면 WSL로 전환하지 않고 현재 환경에 로그인 할 수 있습니다.
thoni56

4

다음 링크를 사용하여 .exe (setup / installer) 파일 서명 (Microsoft setup signtool을 사용하지 않고 exe / setup 파일 서명)

https://ebourg.github.io/jsign/#files

샘플 명령 java -jar jsign-2.0.jar --keystore keystore.jks "--alias alias --storepass password MyInstaller.exe

나를 위해 일했다 :)


3

이것은 질문에 대한 직접적인 대답은 아니지만 조만간 프로그래머가 지갑에 손을 넣었으므로 밀접한 관련이 있으며 유용합니다.

EV 서명 가격 :

1 년 $ 350 + (숨겨진 50 달러)
2 년 $ 600
3 년 $ 750
[www.ksoftware.net] [3]
eToken이 USB 스틱으로 전송되었습니다. 독자가 필요하지 않습니다.
실제로 Comodo (Sectigo)에서 구매

1 년 350 유로
3 년 799 유로
sklep.certum.pl

1 년 $ 499 USD
3 년 $ 897 USD
sectigo.com

1 년 $ 410 총
2 년 $ 760 총
3 년 $ 950 총
www.globalsign.com

1 년 : $ 600 ($ 104)
3 년 :?
www.digicert.com

1 년 : $ 700
3 년 : 엄청나게 비싸다
[ https://trustcenter.websecurity.symantec.com/]

더 많은 가격은 여기 :
https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html


Erick Castrillo가 추가 한 링크 참조 : cheapsslsecurity.com/sslproducts/codesigningcertificate.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.