Подписать установщик NSIS на Linux - PullRequest
6 голосов
/ 02 марта 2012

В настоящее время я создаю установщик для программы, использующей NSIS на компьютере с Linux.Двоичные файлы NSIS были скомпилированы для Ubuntu, и использование сценария .nsi не представляет трудностей.Однако полученный setup.exe файл не подписан.Это приводит к пугающим предупреждениям для наших пользователей, которые скачивают установщик через большинство распространенных веб-браузеров, а также к предупреждениям от самой Windows при запуске.

Мы хотели бы избежать этих предупреждений, и если я что-то не пропустил, что требует использования средства Windows, чтобы подписать сгенерированный файл setup.exe.Есть ли способ сделать это на компьютере, отличном от Windows?

К сожалению, каждый установщик уникален (разные файлы связаны в зависимости от запроса клиента, включая уникальный идентификатор), поэтому я не могу подписать установщик наWindows-машина, а затем загрузить его.

Ответы [ 3 ]

7 голосов
/ 02 марта 2012

Ваш лучший выбор, вероятно, заключается в использовании: osslsigncode . Создан легко для меня (убедитесь, что заголовки OpenSSL доступны). Однако могут возникнуть проблемы с политикой подписывания в режиме ядра (встраивание родительских сертификатов в корень), поэтому вам, возможно, все равно придется прибегнуть к WINE.

1 голос
/ 04 марта 2012

Я должен был сделать это несколько недель назад, без использования вина. Что я сделал, так это импортировал файл pfx в windows и затем экспортировал его с опцией «Включить все сертификаты в путь сертификата, если это возможно». затем я следовал инструкции на этой странице .

После того, как у вас есть все сертификаты (файлы spc и pvk), вы должны использовать следующую команду:

signcode -spc [spc file] -v [pvk file] -a sha1 -$ commercial -t http://timestamp.verisign.com/scripts/timstamp.dll -tr 10 [exe file to sign] 

Мне пришлось установить моно-пакет:

sudo apt-get install mono-devel
0 голосов
/ 02 марта 2012

Для подписи файлов для Windows используются подписи Microsoft Authenticode. В SDK есть инструмент, который подписывает исполняемые файлы и библиотеки DLL (signtool.exe). Вы можете запустить это, используя Wine.

Также возможно подписывать файлы с помощью вызовов Windows API - эти функции могут быть также реализованы в Wine, но я в чем-то сомневаюсь, потому что Authenticode используется и реализуется только Microsoft (насколько я знаю).

Однако этот инструмент не очень - он в основном добавляет сертификат и подписанную метку времени в конце файла. Также могут существовать адаптации для Linux.

Вот ссылка на кого-то, кто заставил ее работать с помощью цифрового кода.

...