Как подписать XLA из Excel 2016 с меткой времени?

Я изо всех сил пытаюсь подписать XLA из Excel 2016 с меткой времени. Это важно, потому что без отметки времени подпись становится недействительной по истечении срока действия используемого сертификата подписи кода. К сожалению, по умолчанию Excel не применяет метку времени к подписи.

Документация Microsoft (https://docs.microsoft.com/en-us/deployoffice/security/use-digital-signatures-with-office) указывает:

Чтобы использовать функцию отметки времени с цифровыми подписями, необходимо выполнить следующие задачи:

  • Настройте сервер отметок времени, соответствующий RFC 3161

  • Используйте параметр групповой политики Укажите имя сервера, чтобы указать расположение сервера метки времени в сети.

Мой поставщик сертификатов, Comodo, заявляет, что их сервер отметок времени (http://timestamp.comodoca.com) поддерживает RFC 3161 (https://support.comodo.com/index.php?/Knowledgebase/Article/View/68/0/time-stamping-server).

Я загрузил и установил файлы административных шаблонов Office 2016 (ADMX / ADML) со страницы https://go.microsoft.com/fwlink/p/?LinkID=626001, чтобы применить настройки групповой политики. Затем в редакторе локальной групповой политики я могу получить доступ к конфигурации пользователя, административным шаблонам, Microsoft Office 2016, параметрам безопасности, цифровым подписям, где находятся соответствующие параметры групповой политики.

Я изначально установил следующее:

  • Укажите имя сервера метки времени на http://timestamp.comodoca.com
  • Установить время ожидания сервера метки времени на 20

... затем, когда это не сработало (см. ниже), я также установил:

  • Укажите минимальный уровень XAdES для создания цифровой подписи до XAdES-T
  • Запрошенный уровень XAdES для генерации подписи до XAdES-T

... потому что XAdES-T «Добавляет отметку времени в разделы XML-DSig и XAdES-EPES подписи, что помогает защитить от истечения срока действия сертификата» - что звучит как то, что мне нужно.

Я вхожу в редактор VBA, используя Цифровую подпись из меню Инструменты.

Однако когда я проверяю подпись, я по-прежнему не вижу метки времени.

Я проверяю подпись следующим образом (более простого способа не знаю):

  1. На ленте Разработчик щелкните Безопасность макросов, выберите Надстройки, затем установите флажок Требовать подписи надстроек приложений от доверенного лица. Издатель. Щелкните ОК, затем закройте Excel. (Я не являюсь доверенным издателем, поэтому намеренно отключаю надстройку.)

  2. Перезапустите Excel и создайте пустую книгу. (Моя надстройка настроена на автоматическую загрузку.) На шаге 1 отображается ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ.

Предупреждение безопасности Excel

  1. Щелкните для получения дополнительных сведений при появлении запроса, затем выберите Дополнительные параметры в меню Включить содержимое.

Информация о файле

  1. В диалоговом окне Параметры безопасности Microsoft Office прокрутите вниз до подписанной надстройки и нажмите Показать сведения о подписи. Откроется диалоговое окно Подробная информация о цифровой подписи, в котором отображается Время подписи: Not available, что указывает на отсутствие отметки времени:

без подписи

Насколько я понимаю, подпись с отметкой времени покажет это здесь, например.

подпись с отметкой времени

... но я не смог добиться этого с моим XLA.


person davidm_uk    schedule 01.06.2018    source источник


Ответы (2)


Я обнаружил, что в дополнение к изменениям групповой политики, подробно описанным в моем вопросе:

User Configuration\Administrative Templates\Microsoft Office 2016\Security Settings\Digital Signatures\

Редактор групповой политики

Имя сервера отметки времени

... также было необходимо установить некоторые ключи реестра, которые я нашел ранее, но которые не работали изолированно:

reg add "HKCU\Software\Microsoft\VBA\Security" /v "TimeStampURL" /f /d "http://timestamp.comodoca.com/authenticode"
reg add "HKCU\Software\Microsoft\VBA\Security" /v "TimeStampRetryCount" /f /t REG_DWORD /d 2
reg add "HKCU\Software\Microsoft\VBA\Security" /v "TimeStampRetryDelay" /f /t REG_DWORD /d 1

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

reg add "HKCU\Software\Policies\Microsoft\office\16.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office\12.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office\14.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"
reg add "HKCU\Software\Policies\Microsoft\office\15.0\common\signatures" /v tsalocation /f /d "http://timestamp.comodoca.com"

(поддержка некоторых более старых версий Excel).

Вышеуказанные настройки предназначены для моего эмитента сертификатов, Comodo. Все ссылки на timestamp.comodoca.com необходимо будет соответствующим образом обновить.

person davidm_uk    schedule 13.11.2020

Согласно документации вашего сервера временных меток < / а>:

(Источник изображения)


Больше информации:

person ashleedawg    schedule 02.06.2018
comment
Я не могу (я полагаю) использовать signtool для подписи XLA? Мы успешно используем его с отметкой времени для EXE и DLL, но я почти уверен, что XLA должны быть подписаны в Excel. - person davidm_uk; 02.06.2018
comment
stackoverflow.com/questions/47933788/ - person davidm_uk; 02.06.2018