Временная метка цифровой подписи недоступна в XP/Vista, что приводит к сбою проверки

Фон

У меня есть установочный пакет WiX/Burn, который, среди прочего, устанавливает среду выполнения ReportViewer 2012. При запуске на компьютере с Windows 7 или более поздней версии он работает нормально. В XP (SP3) или Vista (SP1) не работает.

Теперь, проверив страницу загрузки распространяемого компонента ReportViewer, Я заметил, что он говорит, что требуется Vista SP2 или выше. Обычно я бы согласился с этим, но а) я думаю, что это недавно изменилось, и б) загрузка и ручная установка этого распространяемого пакета работает. Возможно, есть части, которые не работают на XP/Vista, но для моих намерений и целей он устанавливается и работает довольно хорошо, несмотря на их заявления.

Проблема

Изучение файла журнала установки объясняет, что проверка цифровой подписи не удалась. Поэтому я вручную загружаю распространяемый пакет на компьютер с Windows XP и проверяю его подпись. Подпись есть, но временная метка сообщает «Недоступно». Нажатие «Подробности» также сообщает мне, что время подписания «Недоступно». Сам файл подписан сертификатом с истекшим сроком действия, поэтому без этой метки времени проверка, естественно, не проходит.

Однако, если я загружаю тот же файл на компьютер с Windows 7, метка времени присутствует. Нажатие на кнопку «Подробности» показывает мне подпись, проверка работает, и установка проходит правильно.

Что я пробовал

Я безрезультатно установил несколько различных версий «Обновления корневых сертификатов», в том числе последний. Если это действительно решение, сообщите мне какой мне нужен.

Я следил за цепочкой сертификатов на контрподписи, и она заканчивается на «Корневой центр сертификации Microsoft 2010». Этот корневой сертификат, по-видимому, установлен на компьютере с XP. Единственное, что я вижу, это версия этого сертификата "2011" также в хранилище "Сторонние корневые центры сертификации", а версия 2010 - нет. Я не знаю, является ли это причиной проблемы или нормальным явлением.

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

Мой вопрос

Есть ли обновление для загрузки или шаг, который могут предпринять «обычные» пользователи, который позволит распознавать метку времени/контрподпись в XP/Vista? "Обычные" пользователи здесь означают тех, кто не очень хорошо разбирается в компьютерах; Я не имею в виду права администратора.


person lc.    schedule 21.02.2014    source источник


Ответы (2)


Похоже, что существует два типа контрподписи временных меток, которые можно использовать для подписи кода Windows (Authenticode):

  • Собственность: результаты в V1 в поле Версия (версия PKCS#7?) свойств контрподписи
  • На основе RFC 3161: результат V2

Я не нашел никакой документации, в которой бы это было указано явно, но при тестировании оказалось, что Windows XP (SP3, со всеми установленными обновлениями) поддерживает временные метки только с версией V1. Временные метки с версией V2 приводят к статусу «недоступно». Конечно, номера версий могут просто коррелировать с результатами — возможно, есть еще один аспект временной метки, из-за которого ее игнорируют.

Доступный в настоящее время MSI-файл ReportViewer имеет отметку времени V2. Однако отметка времени также была сделана в июле 2014 года, после публикации этого вопроса.

Больше фона:

Команда Windows SDK signtool поддерживает две опции (для подкоманд sign и timestamp) для создания двух разных типов меток времени:

  • /t <timestamp server URL>: приводит к V1
  • /tr <RFC 3161 timestamp server URL>: приводит к V2

signtool документация для /tr состояний:

Windows Vista и более ранние версии: этот флаг не поддерживается.

Однако кажется неясным (из-за того, что аналогичные операторы используются в других параметрах), относится ли это к целевой системе или к системе, в которой работает signtool.

Примеры

V1 временная метка:

signtool.exe sign /f cert.pfx /p %passphrase% /t http://timestamp.comodoca.com/authenticode /d "Test" test.exe

V2 временная метка:

signtool.exe sign /f cert.pfx /p %passphrase% /tr http://timestamp.comodoca.com/rfc3161 /d "Test" test-rfc3161.exe
person tangle    schedule 08.05.2015
comment
Я могу убедиться, что переключение с /tr на /t привело к тому, что Windows Vista начала распознавать метки времени в моих подписях. Я даже пытался загрузить исполняемый файл, подписанный с помощью /t, в IE 10 на 64-разрядной версии Windows 7, и он работал нормально, несмотря на то, что в прошлом он не работал у меня. (Раньше я думал, что IE сканирует файлы, подписанные с помощью /t, и говорит, что они недействительны, и я все еще могу воспроизвести это с некоторыми старыми файлами, которые я подписал в одной конкретной системе.) Но независимо от того, использую ли я /t или /tr, метка времени отображается как V2 в диалоговом окне Свойства. Я думаю, что номер версии не так важен, как вы говорите. - person David Grayson; 10.07.2015
comment
Я использовал сервер меток времени GlobalSign; Я не пробовал comodoca, и это может объяснить различия. Я по-прежнему согласен с тем, что /t решает проблему, но я думаю, что то, что вы наблюдали в V1/V2, — это просто совпадение. - person David Grayson; 10.07.2015
comment
Спасибо @DavidGrayson. Я согласен, что дело с V1/V2, скорее всего, совпадение. - person tangle; 15.09.2015

Трудно сказать точно, но похоже, что это может быть связано с http://technet.microsoft.com/en-us/security/advisory/2749655

Согласно RFC3280, расширения Enhanced Key Usage (EKU) с отметкой времени используются для привязки хэша объекта ко времени. Эти подписанные утверждения показывают, что подпись существовала в определенный момент времени. Они используются в ситуациях обеспечения целостности кода, когда срок действия сертификата подписи кода истек, чтобы убедиться, что подпись была сделана до истечения срока действия сертификата. Эта проблема вызвана отсутствием расширения Enhanced Key Usage (EKU) с отметкой времени во время создания сертификата и подписания основных компонентов и программного обеспечения Microsoft. Некоторые сертификаты, использовавшиеся в течение двух месяцев 2012 года, не содержали расширения Enhanced Key Usage (EKU) с меткой времени X.509.

Я не удивлюсь, что ошибка, такая как недоступная отметка времени, будет выдана, даже если подпись включает отметку времени, когда сертификат не содержит отметку времени EKU, потому что на определенном уровне это так, и в сообщениях об ошибках часто отсутствуют такие подробности.

Вы применяли обновления с http://support.microsoft.com/kb/2749655?

Что делает это обновление?

Это обновление поможет обеспечить постоянную функциональность всего программного обеспечения, подписанного с помощью определенного сертификата, который не использует расширение Enhanced Key Usage (EKU) с меткой времени. Чтобы расширить их функциональность, WinVerifyTrust будет игнорировать отсутствие метки времени EKU для этих конкретных подписей X.509.

person Old Pro    schedule 02.03.2014
comment
Спасибо за ваш ответ. Я не уверен, насколько это актуально для этого конкретного случая. Я уже пробовал обновление, на которое вы ссылались, и оно не решает проблему. И, FWIW, глядя на сертификат скрепляющей подписи на компьютере с Windows 7, где он распознается и отображается, он (служба меток времени Microsoft) имеет указанное расширение EKU для меток времени (1.3.6.1.5.5.7.3.8). - person lc.; 03.03.2014
comment
Да, конечно, имеет смысл, что установка будет работать, если в сертификате скрепления указано расширение EKU с отметкой времени. Возможно, разработчик не включил метку времени для более старого сертификата во время генерации, потому что инструмент подписи учитывал (отсутствие) EKU метки времени в соответствующем сертификате, и в этом случае ваша единственная надежда была бы установить сертификат Windows 7, что выходит за рамки моего опыта, чтобы знать, возможно ли это вообще. - person Old Pro; 04.03.2014