Проблемы с подписью кода

Укороченная версия

У меня возникают проблемы при подписании кода с помощью Windows 7/Signtool.exe, и я ищу несколько советов / разъяснений о том, как справиться со следующей проблемой: когда я пытаюсь подписать файл кода.exe в Windows 7, используя signtool и / Как вариант, signtool не будет работать, он жалуется на то, что я пытаюсь использовать какую-либо неподдерживаемую опцию. Подпись без / как работает в Windows 7, а подпись с / как работает в Windows 8.1 и Windows 10.

  1. Кто-нибудь, кто подписывает с помощью / как на WIndows 7, получил signtool для работы?

  2. Зачем кому-то использовать /as, если у него есть только одна подпись в файле?

Длинная версия

Мне посоветовали подписать мои.exe-файлы, главным образом, чтобы пропустить предупреждения Windows о неизвестном происхождении программного обеспечения, и делал это в течение многих лет, не слишком задумываясь об этом. Я использовал signtool и файл pfx, предоставленный клиентом, и все было в порядке. Программное обеспечение продается клиентам по всему миру и должно работать на Windows XP и выше. Неопытные пользователи могут быть возмущены предупреждением о том, что программное обеспечение потенциально опасно, поэтому подписывание было осуществлено несколько лет назад.

Недавно истек срок действия файла pfx. Наряду с новым и действующим сертификатом (Verisign/Geotrust) мне дали инструкции, что новый файл теперь (поддерживается? Требуется? Принудительно / и используется?) Sha256, и мне нужно использовать следующую командную строку для подписи моего кода:

"signtool.exe" sign /n "..." /d "..." /du "..." /as /fd sha256 /tr "http://timestamp.geotrust.com/tsa" "<.exe file name>"

Я импортировал новый pfx в свое хранилище сертификатов, удалил старый (срок действия которого истек в любом случае) и дал ему попробовать, но на моей машине для разработки (Windows 7 x64) это выдало мне сообщение об ошибке от signtool:

Ошибка SignTool: требуемая функция отсутствует.
Эта ошибка, вероятно, означает, что вы используете SignTool в ОС, которая
не поддерживает указанные вами параметры.

Я попробовал это на машине с Windows 8.1, и команда сработала. Мой клиент попробовал на своем компьютере с Windows 10, и это тоже сработало.

Методом проб и ошибок я обнаружил, что опция / as вызывает проблему, и если я ее опущу, я также могу подписаться на Windows 7. Кажется, что сообщение ведет в правильном направлении, но когда я читаю документы в Microsoft ( https://msdn.microsoft.com/de-de/library/8s9b9yaz%28v=vs.110%29.aspx) там нет В любом месте не указано, что параметр / as зависит от версии ОС. Поэтому я подозреваю, что, возможно, есть что-то еще, что требует обновления, но, поскольку я установил последнюю версию.net Framework (4.5.1), и никакой другой зависимости в списке нет, что еще я могу обновить? Перемещение моей платформы разработки на Windows 8 или Windows 10 - это не то, что мне нравится сейчас делать.

Я думал о том, чтобы просто опустить / как вариант. Похоже, что дело касается нескольких подписей, добавленных в один файл. Если я следую требованиям моего клиента, он все равно хочет только одну подпись (вариант sha256, используя новый сертификат) на коде.

Когда я поднял этот вопрос, мой клиент ответил, что ему дал образец кода кодового знака некий технарь, у которого он купил сертификат. На своем тестовом компьютере (Windows 10) он обнаружил, что он работает. Ему было все равно, если я опущу опцию, если я гарантирую, что это не будет иметь негативных последствий. Я не вижу ничего, так как, как я объяснил, только одна подпись есть на файлах, поэтому вариант, который добавляет другую, на мой взгляд, излишний.

Однако я не уверен на 100%.

1 ответ

Решение

Windows 7 SDK не имеет опции / как. Вы должны перейти на Win 8.1 или выше.

Signtool знак /?

Должны показать все варианты.

Другие вопросы по тегам