Как дважды подписать программное обеспечение Microsoft Windows с использованием одного сертификата Microsoft Authenticode
Предположим, что вы хотите, чтобы ваше программное обеспечение запускалось в Windows 7 и Windows 8.
Windows 8 поддерживает подписи, созданные с помощью алгоритма хэширования SHA256, но Windows 7 этого не делает.
Для Windows 7 вам нужно подпись, созданная с помощью алгоритма хэширования SHA1.
В этом случае вы можете подписать свое программное обеспечение с помощью первичной подписи, которая использует
SHA1 и еще раз подписать его используя SHA256, при этом используя один и тот же сертификат для обеих подписей.
Для того чтобы "провернуть" такое загрузите Microsoft Windows SDK
Ниже приведены основные поддерживаемые аргументы
Знак : настраивает инструмент для подписи предполагаемого файла
/ a: Автоматически выбирает лучший сертификат подписи. Инструмент «Значок» найдет все допустимые сертификаты, которые удовлетворяют всем указанным условиям, и выберите тот, который действителен в течение самого длительного времени. Если этого параметра нет, Sign Tool ожидает найти только один действительный сертификат подписи.
/ v: указывает подробный вариант для успешного выполнения и предупреждений
/ s: указывает хранилище сертификатов (если сертификат импортирован в личный хранилище, хранилище SPCCertificateStore MY).
/ t. Указывает, что цифровая подпись будет отмечена временной отметкой администратором временного штампа (TSA), указанным в URL-адресе.
/ f: указывает сертификат подписи в файле. Поддерживается только формат файла личной информации (PFX).
/ p. Если файл находится в формате PFX, защищенном паролем, используйте параметр / p для указания пароля.
/ as: Добавляет эту подпись. Если первичной подписи нет, эта подпись будет вместо этого сделана первичная подпись.
/ fd: Указывает алгоритм дайджеста файла, который будет использоваться для создания сигнатур файлов. По умолчанию используется SHA1.
/ n: subjectName: Указывает имя субъекта сертификата подписи. Это значение может быть подстрокой всего имени субъекта.
/ tr: Указывает URL-адрес сервера метки времени RFC 3161.
Если этот параметр (или / t) отсутствует, подписанный файл не будет отмечен отметкой времени.
Предупреждение генерируется, если произойдет сбой времени. Эта опция не может использоваться с опцией / t .
Подпись файла одним сертификатом с разными алгоритмами хеша SHA1 и SHA2
Подпишите ваш файл используя алгоритм SHA 1
signtool.exe sign /a /s MY /n "Common name" /t http://timestamp.verisign.com/scripts/timstamp.dll /v "<file to be signed>"
Подпишите ваш файл используя алгоритм SHA 2
signtool.exe sign /a /s MY /n "Common name" /as /fd sha256 /tr http://timestamp.geotrust.com/tsa /v "<file to be signed>"
Если вы подписываете файл с помощью сертификата,
хранящегося в защищенном паролем файле PFX, просто используйте в команде аргументы
"/f YourCertFileName.pfx /p pfxpassword" вместо "/a /s MY /n "Common name"
Убедитесь что ваш файл подписан дважды одним сертификатом Microsoft Authenticode используя алгоритмы SHA1 и SHA2
Перейдите к подписанному файлу приложения с помощью Windows 8
Щелкните правой кнопкой мыши подписанный файл приложения
нажмите « Свойства»
Перейдите на вкладку « Цифровые подписи »
Вы увидите такую каринку если процесс подписания будет успешным .