Ответ 1
Как уже упоминалось в других ответах, вам сначала необходимо приобрести сертификат, подходящий для подписи кода. Это будет стоить несколько сотен долларов, нигде около тысячи. Когда я недавно обновил сертификат своей компании 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. Как только он находится в хранилище сертификатов на компьютере загрузки, вы можете экспортировать его как файл pfx, перенести его на свою машину сборки и импортировать его там. Если вы его экспортируете, я бы посоветовал вам защитить экспортированный файл паролем, если он попадает в чужие руки.
Когда вы используете задачу SignTool MSBuild, как указано выше, она считывает сертификаты из личного хранилища ( "Мой" ), который связан с текущей учетной записью пользователя Windows. Это означает, что вы можете контролировать, кто может подписать код с вашим сертификатом, который является хорошим. Вы должны импортировать сертификат только в личный магазин разработчиков, которому вы доверяете.
Рекомендуется использовать сервер timestamp при подписании кода, так что вам не нужно повторно подписывать код, когда срок действия сертификата истекает.