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.