Как подписать инсталляцию
Зачем нужна цифровая подпись
Цифровая подпись предназначена для того, чтобы указать автора программы и показать, что данная программа или файл не был изменен другими лицами. Если кто-то попробует модифицировать подписанную программу, то цифровая подпись сразу становится недействительной. Это главное предназначение цифровой подписи.
Второе преимущество подписанных программ и инсталляций состоит в том, что антивирусные программы более лояльно относятся к подписанным приложениям. Ложные срабатывания и необоснованные попадания в карантин у подписанных программ встречаются реже.
Также сравните сообщения, которые показывает UAC при запуске подписанной и неподписанной инсталляции. Сообщение для подписанной инсталляции вызывает больше доверия у пользователя.
Неподписанная инсталляция
Подписанная инсталляция
Как получить цифровую подпись
Цифровую подпись можно купить у специальных организаций. Например, Comodo, Verisign (Symantec). Сертификат можно приобрести как на один год, так и на несколько лет. Цены начинаются от $100-150 за один год, но через партнеров можно купить сертификат дешевле. Например, KSoftware, являсь стратегическим партнером Comodo, продают сертификаты за $95 в год и есть скидки при его покупке на несколько лет. После того как вы произвели оплату, сотрудники соответствующей организации удостоверятся, что вы являетесь именно тем лицом или организацией на чье имя выдается цифровая подпись. Когда все данные проверены, вам будет дана ссылка, по которой вы загрузите сертификат в Internet Explorer и затем вам нужно сохранить его в виде файла с расширением .pfx, также у вас должен быть пароль, который вы указывали при формировании заявки на сертификат.
Как подписывать программы с помощью цифровой подписи
Для подписывания программ можно использовать бесплатную утилиту signtool.exe от компании Microsoft. Запуск из командной строки с примерно такими параметрами подпишет ваше приложение myapp.exe: signtool.exe sign /a /f "c:\docs\sertificate\mysign.pfx" /p mypassword /t http://timestamp.comodoca.com/authenticode "c:\my application\myapp.exe".
Кроме этого, существует бесплатная программа kSign от ksoftware.net с оконным интерфейсом и с запуском из командной строки. Ниже вы можете взглянуть на скриншоты этой удобной утилиты. Она не требует signtool.exe, signcode.exe и любое другое Microsoft SDK.
kSign
kSignCMD
Как подписывать инсталляции в инсталляторе CreateInstall
Конечно, можно самостоятельно подписывать инсталляции созданные CreateInstall, но лучше автоматизировать этот процесс. К тому же, наш инсталлятор позволяет подписывать uninstall.exe и update.exe, которые будут потом распакованы при установке вашей программы на компьютер пользователя. Рассмотрим следующее решение с использованием утилиты kSignCMD.exe, которая входит в программу kSign. Создайте .bat файл примерно следующего содержания и сохраните его в секретном месте. Самое главное, чтобы он был доступен в момент сборки вашего дистрибутива. [pfxfile] замените на полный путь к вашему .pfx файлу, а [password] замените на ваш пароль. Команда pause нужна, чтобы вы могли вовремя обнаружить ошибку, которая может возникнуть при попытке подписать приложение. С другой стороны, из-за этой команды вам придется нажимать на какую-нибудь клавишу для продолжения процесса создания дистрибутива.
"C:\Program Files (x86)\kSign\kSignCMD.exe" /f "[pfxfile]" /p [password] %1 %2 %3 %4 %5 pause
Сейчас откройте ваш проект в CreateInstall и перейдите к закладке Проект - страница Setup Builder. В поле Application for Code Signing укажите полный путь к созданному нами .bat файлу. Он будет запускаться когда потребуется подписать приложение. Далее укажите параметры для подписывания дистрибутива, деинсталлятора и программы проверки обновлений. Первым параметром должно быть определено общее наименование программы, а вторым
Parameters for Signing of Installation File: Setup "<exefilename>" Parameters for Signing of Uninstaller File: Uninstall "<exefilename>" Parameters for Signing of Updater File: Update "<exefilename>"
В данном случае, CreateInstall вызовет наш .bat файл для подписывания установки, деинсталлятора и программы обновления, если вы включаете ее в свой проект.