2010-06-27 2 views
22

관리자 액세스가 필요한 소프트웨어를 코딩하고 있습니다. UAC 대화 상자가 나타나면 서명되지 않은 소프트웨어와 다른 디지털 서명 된 소프트웨어 팝업이 표시됩니다. 디지털 소프트웨어에 서명하면 사용자가 내 소프트웨어를 더 쉽게 신뢰할 수 있습니다. 디지털 서명 소프트웨어에 수천 달러의 비용이 들거나 무료입니까? 그것을 할 수있는 간단한 방법이 있습니까? Google에서 검색 한 결과 PHP, XML 및 PDF 파일에 서명하는 방법이 있습니다. 원하는 방식이 아닙니다. 내 소프트웨어 실행 파일에 서명해야합니다.실행 파일에 디지털 서명을하려면 어떻게해야합니까?

그냥 sigtool.exe에 대해 뭔가를 봤어? 이것이 올바른 방향입니까? 그 복잡한 .pfx 파일과 Authenticode는 어떻습니까?

답변

4

여기 마케팅 담당자가 아니지만 시도해보십시오. VeriSign. 그들은 당신이 찾고있는 Code signing를 제공합니다.

18

다른 답변에서 언급했듯이 먼저 코드 서명에 적합한 인증서를 구입해야합니다. 이것은 수천 달러에 달할 것이며 수천명에 달할 것입니다. 최근에 Globalsign으로 회사 인증서를 갱신 할 때 회사가 합법적인지 확인하기위한 조사도있었습니다. 등록 절차에 모바일 번호를 사용했기 때문에 회사 회계사가 보낸 편지에서 우리가 실제 비즈니스인지 확인하기를 원했습니다 .

실행 파일에 서명하려면 MSBuild 작업을 사용합니다. 당신은 (위의 예에서 CertificateStoreName="My" 참조) 개인 인증서 저장소에 인증서를 설치해야합니다 위와 같이이 작업을 수행하려면

<!-- 
Installer files that need to be signed. 
--> 
<ItemGroup> 
    <InstallerSignedFiles Include="$(BuildRoot)path\to\myinstaller.msi"/> 
    <InstallerSignedFiles Include="$(BuildRoot)path\to\setup.exe"/> 
</ItemGroup> 

<Target Name="ReleasePackaging"> 
    <!-- Sign the files we're going to release --> 
    <SignTool 
     CertificateStoreName="My" 
     CertificateSubjectName="MyCompany" 
     Description="My application description" 
     TimestampServerUrl="http://timestamp.verisign.com/scripts/timstamp.dll" 
     TargetFiles="@(InstallerSignedFiles)" 
    /> 
</Target> 

: 여기에 관련 조각 발췌 한 것입니다. Globalsign 웹 사이트에서이 설치는 인증서 다운로드 프로세스의 자동 부분이었습니다. 참고 : 인증서를 다운로드 할 때 Internet Explorer를 사용하면 Windows 인증서 저장소와 통합되므로 Internet Explorer를 사용하는 것이 좋습니다. 다운로드 컴퓨터의 인증서 저장소에 있으면 export it as a pfx file 수 있으며이를 빌드 컴퓨터로 전송하여 가져올 수 있습니다. 그것을 내 보내면 내 보낸 파일을 잘못 취급 할 경우를 대비하여 암호로 보호하는 것이 좋습니다.

위와 같이 SignTool MSBuild 작업을 사용하면 현재 Windows 사용자 계정과 연결된 개인 저장소 ("My")에서 인증서를 읽습니다. 즉, 인증서로 코드에 서명 할 수있는 사람을 제어 할 수 있습니다. 이는 좋은 일입니다. 신뢰할 수있는 개인 개발자 저장소로만 인증서를 가져와야합니다.

코드에 서명 할 때 타임 스탬프 서버를 사용하면 인증서가 만료 될 때 코드를 다시 서명 할 필요가 없습니다.

+0

(https://knowledge.verisign.com/support/code-signing-support/index? 페이지 : 콘텐츠 & id = AR190) 타임 스탬프 서버에 대한 올바른 링크는 http://timestamp.verisign.com/scripts/timstamp.dll입니다. "참고 :"timstamp.dll "에는"e "문자가 포함되어 있지 않습니다." – marius

+0

I 코드 샘플의 철자를 수정했습니다. –

+0

[SignFile] (http://msdn.microsoft.com/en-us/library/ms164304.aspx) 작업 만 표시됩니다. 당신이 말하는이 "SignTool"작업은 무엇입니까? – Will

10

Microsoft의 코드 서명 명령 줄 유틸리티가 필요합니다.

: 그리고

signtool.exe sign /v /f "MyCertificate.pfx" -t "http://timestamp.verisign.com/scripts/timstamp.dll" "MyApp.exe" 

또는 감독의 지시에 베리사인이 노트로 alternativly

signcode.exe -a "sha1" -spc "MySoftwarePublishingCertificate.spc" -v "MyPrivateKeyFile.pvk" -t "http://timestamp.verisign.com/scripts/timstamp.dll" "MyApp.exe" 
관련 문제