Нужно ли повторно подписывать макросы Excel после обновления сертификата? - PullRequest
3 голосов
/ 02 апреля 2019

Я создал от 20 до 30 форм в Excel, а также надстройку Excel для работы с формами пару лет назад.Формы и надстройка содержат код VBA, который мы кодируем подписанным сертификатом от Go Daddy.Срок действия сертификата истекает в этом месяце, и компания обратилась ко мне с просьбой помочь им со всем, что необходимо сделать, чтобы убедиться, что формы все еще будут работать, и не будет сообщать корпоративным пользователям о доверии макросам.

Сертификат будет обновлен сGo Daddy, оригинальный провайдер.

Нужно ли мне перекодировать подпись проекта VBA в каждом файле или достаточно ли умна подпись кода, чтобы понять, что сертификат был обновлен, и все равно использовать его?Похоже, что в худшем случае мне придется открыть каждый проект VBA и заново подписать код, сохранить файлы, а затем повторно развернуть их на сервере, с которого пользователи открывают формы при их использовании.

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

Спасибо!

1 Ответ

3 голосов
/ 02 апреля 2019

Скорее всего, вам придется подать в отставку все файлы, поскольку в подписи фактически говорится: «Этот код утвержден создателем, привязанным к прилагаемому сертификату, что подтверждено этой заслуживающей доверия компанией». И поскольку срок действия сертификатов истекает, вы не можете продолжать использовать тот же. Это сделано для того, чтобы кто-то не мог найти старый сертификат где-то на сброшенном жестком диске или что-либо еще и подписать код под ложным именем.

Однако, что вы должны сделать, это "Отметить время" вашего запроса на подпись кода. Временная метка вашего кода говорит: «Этот код утвержден создателем в данный момент времени и с тех пор не изменился». Однако для того, чтобы поставить метку времени в проекте VBA, вам необходимо вручную включить использование соответствующей внешней службы, поэтому вам понадобится Интернет.

Процесс объясняется в этой статье от Godaddy:

https://www.godaddy.com/help/code-signing-microsoft-office-macros-and-visual-basic-for-applications-4779

Если вы хотите, чтобы люди продолжали использовать ваш подписанный код Visual Basic® for Applicaions (VBA) после истечения срока действия сертификата, измените реестр на компьютере, подписывающем код, чтобы добавить отметку времени во время подписи с использованием следующие клавиши:

  • Создать ключ: HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ VBA \ Security
  • Создать строку: HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ VBA \ Security \ TimeStampURL
  • Создать DWORD: HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ VBA \ Security \ TimeStampRetryCount
  • Создать DWORD: HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ VBA \ Security \ TimeStampRetryDelay

Установите новые поля в следующие значения:

После этого:

Для кодирования подписи документов

  1. Откройте файл, который вы хотите подписать.
  2. Откройте меню «Инструменты», выделите «Макрос» и нажмите «Редактор Visual Basic».
  3. В окне Project Explorer выберите макропроект VBA, который вы хотите подписать.
  4. В меню Сервис выберите Цифровая подпись.
  5. Нажмите «Выбрать» и выберите сертификат подписи кода.0
  6. Нажмите OK, чтобы закрыть.

Эта процедура должна позволить вам продолжать использовать макросы VBA после истечения срока действия сертификата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...