0

Я недавно приобрел EV сертификат код подписи от DigiCert ...возникли проблемы с EV подписывания кода

Теперь я имею вопросы подписать мой инсталлятор исполняемые файлы.

В настоящее время (до сих пор) ниже процесс, чтобы сделать инсталлятор:

Шаг 1:

Мой инсталлятор сконфигурирован таким образом, так, она будет загружать все общие файлы с его ребенком поддержки.

как ниже структуры файлов:

Setup.exe (это только файл ехе приложений и несколько другой файл конфигурации, который изменяет время от времени)

Support (Каталог)

Support \ DLL (Есть DLL файлы, которые требуются мое приложение)

Support \ других (Любые другие файлы)

Поддержка \ ETC (Just например, цели)

Всех этих файлов поддержка будет проживать на моем сервере, поскольку они не меняются часто

так, я создал файл обертка installer.exe и скрипт для обработки обертки ..

Это обертка файл installer.exe также находится на моем сервере

Шаг 2:

Мой скрипт делает следующие шаги:

a) Сделайте файл setup.exe с обновленными файлами приложений.

б) загружать файл setup.exe на сервере

с) добавить (добавить), что setup.exe и все другие необходимые файлы в конце обертки installer.exe файла

г) я обеспечиваю что wrapper installer.exe (один файл) для моих клиентов/пользователей.

Шаг 3:

Когда эта обертка выполняет, он создает временную папку в папке темп. извлеките все файлы, которые добавлены сами по себе. и запустите setup.exe из этого каталога temp

Я делаю этот процесс, так как мне нужно изменить только файл приложения, всего лишь несколько килобайт (всегда ниже 1 Мб), но эти файлы поддержки огромны по размеру.

Поэтому, вместо того, чтобы загружать все эти файлы с моего локального компьютера каждый раз.

Я делаю этот процесс обертки, чтобы сделать процесс обновления/загрузки намного быстрее.

Теперь проблема:

Если я подписать файл wrapper.exe и поместить его на сервер, но когда мой сценарий добавить данные в этот файл, он теряет параметры сертификата (он больше не подписан:()

так, как я могу преодолеть эту ситуацию ..

Update-1:

как спросил, ниже код PHP, который используется чтобы добавить файл setup.exe:

//Appending Setup.exe file... 
    $archive_File = 'files/' . $strFileID . '.exe'; 
    if (is_file($archive_File) == 1) 
    { 
     $strSize = filesize($archive_File); 
     $strData = 'Setup.exe' . chr(0) . $strSize . chr(0) . file_get_contents($archive_File) ; 
     file_put_contents($strArchiveFile, $strData, FILE_APPEND | LOCK_EX); 
    } 
    else 
    { 
     exit ('following file does not exits: ' . $archive_File); 
    } 

наилучшие пожелания

+0

Вам нужно показать код, как вы добавляете и извлекаете эти файлы настроек своей оболочкой. Вы должны указать общедоступную версию wrapper.exe. – selbie

+0

подписи встроены в сами файлы. Они не просто теряют свою подпись, если не было какой-либо коррупции, или ваш скрипт добавлял неподписанные версии файлов. – selbie

+0

@selbie, сэр, пожалуйста, проверьте, что я добавил образец/часть моих кодов .. наилучшие пожелания –

ответ

2

Вы не можете изменить wrapper.exe после того как вы его подписали код. В этом весь смысл подписи кода - чтобы убедиться, что в подписанном исполняемом файле не обнаружен вирус или другое вмешательство.

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

  1. Код знака setup.exe и все другие исполняемые файлы сначала для wrapper.exe

  2. Append setup.exe, за исключением, а все остальные файлы wrapper.exe.

  3. Тогда code-sign wrapper.exe после того, как он был полностью построен.

Есть много бесплатных инструментов, которые будут генерировать самораспаковывающийся архив, который при запуске предложит пользователю запустить setup.exe в нем. 7Zip will do this for free.

Но похоже, что вам нужно построить свой файл wrapper.exe по запросу прямо перед его загрузкой. Если это так, добавьте скрипт подписи кода к вашему серверному коду, который создает окончательный файл wrapper.exe

+0

Большое спасибо за ваш ответ, сэр, позвольте мне вас немного разобраться. Я знаю, что это проблема, например, теперь я делаю все это, и мой размер wrapper.exe составляет 50 Мбайт +, и я загружаю его на свой сайт/сервер. Через несколько дней я обновляю свой файл exe (man application file), и снова мне приходится обрабатывать все файлы и загружать exe-файл обложки, размер этого файла равен 50 Мбайт +, в то время как файл exe-приложения меньше 1 МБ. В настоящее время мне просто нужно загрузить файл setup.exe, и отдых выполняется на моем сервере. Надеюсь, это ясно, сэр? –

+0

Вам нужно рассмотреть другие конструкции. 50MB звучит не очень много для повторной загрузки. Вы на модеме? :) Стандартной практикой было бы перекомпоновать файл wrapper.exe со всеми файлами приложений каждый раз при обновлении основного исполняемого файла. Это будет делать профессиональная среда сборки. Более простой вариант, хотя и нестандартный, заключается в том, чтобы ваш код скрипта php подписывал двоичный файл, когда он генерируется. Другой альтернативой этому является то, что файл wrapper.exe не содержит никаких файлов, но вместо этого он загружает остальные файлы, устанавливает их и запускает настройку с какого-то известного URL-адреса, встроенного в него. – selbie

+0

благодарит за то, что я так полезен для меня. да, сэр, у вас в стране 50MB-загрузка не может быть проблемой, но вот она :(2-я я не могу зарегистрироваться на моем сервере, потому что 1-й, это сервер Linux, второй мой сертификат - это код кода EV, который использует токен (USB-накопитель) для подписания. Надеюсь, вы знали, что:) .... с наилучшими пожеланиями –