2010-06-27 6 views
22

Я программирую программное обеспечение, требующее административного доступа. Когда появляется диалоговое окно UAC, оно показывает другое всплывающее окно для программного обеспечения с цифровой подписью, чем не подписанное программное обеспечение. Я считаю, что цифровое подписание моего программного обеспечения позволит пользователям доверять моему программному обеспечению. Это стоит тысячи долларов для цифровой подписи программного обеспечения, или это бесплатно? Есть ли простой способ сделать это? Я искал вокруг Google, и все, что я получаю, - это подписать PHP, XML и PDF-файлы, чего я не хочу. Мне нужно подписать мой исполняемый файл.Как я могу подписаться на цифровую подпись?

Просто увидел что-то о sigtool.exe? Правильно ли это? Как насчет этих сложных файлов .pfx и Authenticode, а что нет?

ответ

4

Я здесь никого не продаю, но попробую VeriSign. Они предлагают Code signing, что и есть то, что вы ищете.

18

Как уже упоминалось в других ответах, сначала необходимо приобрести сертификат, подходящий для подписи кода. Это будет стоить несколько сотен долларов, нигде около тысячи. Когда я недавно обновил сертификат моей компании с Globalsign, также было проведено расследование, чтобы проверить, что компания является законной, потому что я использовал мобильный номер для процесса регистрации, они хотели получить письмо от бухгалтера компании, чтобы убедиться, что мы являемся настоящим бизнесом ,

Чтобы подписать исполняемый файл, я использую задачу MSBuild. Вот выдержка с соответствующими частями:

<!-- 
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> 

Для этого, чтобы работать, как описано выше, вам нужно будет установить сертификат в личном хранилище сертификатов (см CertificateStoreName="My" в приведенном выше примере). На веб-сайте Globalsign эта установка была автоматической частью процесса загрузки сертификатов. Примечание. Я обнаружил, что он помогает использовать Internet Explorer при загрузке сертификата, поскольку он интегрирован с хранилищем сертификатов Windows. Как только он находится в хранилище сертификатов на компьютере загрузки, вы можете отправить export it as a pfx file его на свою машину сборки и импортировать там. Если вы его экспортируете, я бы посоветовал вам защитить экспортированный файл паролем, если он попадет в чужие руки.

Когда вы используете задачу SignTool MSBuild, как указано выше, она считывает сертификаты из личного хранилища («Мой»), связанного с текущей учетной записью пользователя Windows. Это означает, что вы можете контролировать, кто может подписать код с вашим сертификатом, который является хорошим. Вы должны импортировать сертификат только в личный магазин разработчиков, которому вы доверяете.

Рекомендуется использовать сервер timestamp при подписании кода, так что вам не нужно повторно подписывать код при истечении срока действия сертификата.

+0

Как отмечает он VeriSign в своих инструкциях (https://knowledge.verisign.com/support/code-signing-support/index? page = content & id = AR190) правильная ссылка на сервер TimeStamp: 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"