Запрос пароля Inno Setup SignTool

Я пытаюсь автоматизировать процесс подписи кода в Inno Setup. К сожалению, у нас довольно строгий протокол о распространении .pfx и паролей, и только один человек в проекте может иметь к нему доступ.

Это не было бы проблемой само по себе, если бы все установки были скомпилированы на машине этого человека. SignTool можно настроить в среде IDE, и пароль останется безопасным на ПК пользователя. Однако мы используем общую машину для компиляции наших сборок, поэтому мы не можем настроить SignTool, поскольку мы не можем оставить этот пароль так легко доступным. Этому есть разные причины, и их нельзя изменить.

Я хотел бы, чтобы Inno открыл диалоговое окно «Введите пароль .pfx» после завершения компиляции.

В настоящее время я думаю либо заставить установку Inno запрашивать аутентификацию, что я не знаю, как это сделать, либо написать небольшой скрипт, который компилирует установку и подписывает ее вне установки Inno. Последнее я мог бы сделать относительно легко, но из-за характера нашего рабочего процесса было бы лучше, если бы для этого можно было использовать установку Inno.

Может ли кто-нибудь помочь мне заставить Inno Setup запросить пароль SignTool для файла .pfx?


person Luke Turner    schedule 21.06.2013    source источник
comment
Какой знаковый инструмент вы используете? Средство подписи Майкрософт? Если это так, вы можете использовать команду signwizard, которая запустит мастер подписи, который при необходимости запросит пароль. Но подумайте, что бы вы все сделали, если бы сами скомпилировали сценарий. Вы бы позвонили боссу для ввода пароля? Я был бы за последнюю идею, о которой вы упомянули, и позволить членам вашей команды скомпилировать неподписанный установщик, и как только вы закончите, позвольте боссу подписать его (из-за пределов InnoSetup).   -  person TLama    schedule 21.06.2013
comment
Да, с помощью инструмента Microsoft Sign из Windows SDK 7.1. Предложенное решение нам, к сожалению, не подходит, мы компилируем более 20-40 установщиков в день, охватывающих около 20 файлов .iss, поэтому мы не можем передать файлы на подпись. Вот почему мы хотим связать его с процессом сборки в Inno, чтобы мы могли просто пропустить подпись, если владелец ключа отсутствует, но для большинства сборок он будет. Часть проблемы заключается в том, что наше тестирование передается на аутсорсинг, и мы быстро проходим сборки, поэтому после завершения компиляции она запускается в течение нескольких минут. Я попробую использовать signwizard в Innosetup   -  person Luke Turner    schedule 21.06.2013
comment
Signtool /a будет искать сертификат, и вы можете установить закрытый ключ без возможности экспорта.   -  person Nick Westgate    schedule 02.06.2015


Ответы (1)


Если владелец ключа согласен с тем, что сборки подписываются автоматически, а не с его фактическим разрешением, то вы можете настроить на его машине какую-то серверную программу, которая выполняет подпись, и изменить команду в Inno, чтобы передать сборку этому программы через вашу сеть, а не вызывать signtool напрямую. Таким образом, только его машина будет знать пароль и/или иметь закрытый ключ.

В качестве альтернативы просто не подписывайте сборки, пока они не пройдут контроль качества и не будут фактически выпущены для клиентов. Удалите настройку SignTool и замените ее на SignedUninstaller.

Когда SignedUninstaller используется без SignTool, владельцу ключа потребуется один раз вручную подписать файл удаления, а затем его можно будет повторно использовать из общего расположения без дальнейшего отказа (пока вы не обновите Inno, после чего вам нужно будет сделать это снова). Создаваемый сценарий будет иметь подписанную деинсталляцию, но неподписанный выходной установщик. Затем вы можете передать его в QA и подписать вручную позже, когда держатель ключа будет доступен (или отказаться от него, если он не прошел QA).

person Miral    schedule 21.06.2013
comment
Это была очень полезная информация. Я использовал это наполовину. Я реализовал файл python, который считывает местоположение .pfx из локального файла, которого нет в SVN. Если этот файл существует, python запрашивает пароль и запускает инструмент подписи. Теперь мне нужно выяснить, как настроить inno для продолжения компиляции, если знак не работает. - person Luke Turner; 27.06.2013
comment
Если бы вы сделали то, что я предложил, компиляция остановилась бы только в том случае, если вы раньше не использовали эту конкретную версию Inno. Подход, который вы используете выше, не будет работать, так как Inno гарантирует, что программа удаления была правильно подписана, прежде чем продолжить. - person Miral; 28.06.2013
comment
ИТ-безопасность требует, чтобы пароль не мог храниться нигде, кроме как в уме. - person Luke Turner; 04.07.2013
comment
Это не проблема, если вы последовали моему второму предложению. - person Miral; 05.07.2013