Цифровая подпись проекта макроса VBA

Применяется к
Excel для Microsoft 365 Word для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Publisher для Microsoft 365 Excel 2024 Outlook 2024 PowerPoint 2024 Excel 2021 Word 2021 Outlook 2021 PowerPoint 2021 Publisher 2021 Visio профессиональный 2021 Visio стандартный 2021 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 Publisher 2019 Visio профессиональный 2019 Visio стандартный 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Publisher 2016 Visio профессиональный 2016 Visio стандартный 2016 Visio профессиональный 2013

В этой статье описано, как подписать макрос в Windows с помощью сертификата. Если у вас еще нет цифрового сертификата, вам потребуется его получить.

Совет

Для использования или тестирования проектов макросов на компьютере можно создать собственный самозаверяющий сертификат с помощью средства Selfcert.exe. Более подробную информацию об этом можно найти ниже.

Получение цифрового сертификата

Цифровой сертификат можно получить в коммерческом центре сертификации (ЦС), у администратора внутренней безопасности или у ИТ-специалиста.

Дополнительные сведения о центрах сертификации, которые предлагают обслуживание для продуктов Майкрософт, см. в списке участников программы корневых сертификатов Майкрософт.

Использование самозаверяющего сертификата

Поскольку самостоятельно созданный цифровой сертификат не был выдан официальным доверенным центром сертификации, макросы, подписанные с использованием такого сертификата, называют самозаверяющими макросами. Microsoft Office доверяет самозаверяющему сертификату только на компьютере, на котором он добавлен в папку "Доверенные корневые сертификаты" в хранилище "Сертификаты - текущий пользователь". Это делает его хорошим для тестирования или использования на вашем собственном компьютере или на очень небольшом количестве машин, которыми вы управляете, но не очень хорошо для распространения макросов среди других людей.

Создание самозаверяющего сертификата

Какую версию Windows вы используете?

Windows 10 или более поздней версии

  1. Перейдите в папку C:\Program Files (x86)\Microsoft Office\root\Office16.

    Совет

    Если вы не найдете его в этой папке, попробуйте C:\Program Files\Microsoft Office\root\Office16

  2. Запустите программу SelfCert.exe. Откроется диалоговое окно Создание цифрового сертификата.

  3. В поле Имя вашего сертификата введите описательное имя сертификата.

  4. Нажмите кнопку ОК.

  5. Когда появится сообщение "SelfCert: успех", нажмите кнопку ОК.

Windows 8

  1. Перейдите в папку C:\Program Files\Microsoft Office\Office version<>\.
  2. Запустите программу SelfCert.exe. Откроется диалоговое окно Создание цифрового сертификата.
  3. В поле Имя вашего сертификата введите описательное имя сертификата.
  4. Нажмите кнопку ОК.
  5. Когда появится сообщение «SelfCert: успех», нажмите кнопку ОК.

Просмотр сертификата в хранилище личных сертификатов

  1. Откройте Microsoft Edge.
  2. Введите edge://settings/privacy в адресной строке.
  3. Прокрутите страницу вниз до раздела "Безопасность " и выберите "Управление сертификатами".

Цифровая подпись макроса VBA в Excel, PowerPoint, Publisher, Visio, Outlook или Word

  1. Откройте файл, содержащий макрос, который необходимо подписать.

  2. На вкладке Разработчик в группе Код нажмите кнопку Visual Basic.

    Примечание

    Если вкладка "Разработчик" недоступна: Перейдите на вкладку "Файл ". Щелкните "Параметры". Выберите пункт Настроить ленту. В списке "Настройка ленты" выберите пункт "Разработчик" и нажмите кнопку "ОК".

  3. В Visual Basic в меню Сервис выберите пункт Цифровая подпись.

  4. Откроется диалоговое окно Цифровая подпись.

  5. Выберите сертификат и нажмите кнопку ОК.

    Примечание

    Если вы еще не выбрали цифровой сертификат или хотите использовать другой, нажмите кнопку "Выбрать". Выберите сертификат и нажмите кнопку ОК.

Добавление отметки времени в подпись

Когда пользователи запускают макрос VBA, Office проверяет проверку подписи и сертификата, с помощью которых был подписан он. Если добавить метку времени в подпись, макрос будет считаться подписанным даже после истечения срока действия сертификата, если сертификат не будет отозван. Это может уменьшить количество перебоев в работе пользователей.

Сертификат с истекшим сроком действия все равно можно использовать для проверки кода, но его нельзя использовать для подписи нового кода.

Чтобы добавить метку времени, необходимо добавить три раздела в реестр.

Внимание!

Неправильное изменение реестра может привести к серьезному повреждению системы. Прежде чем вносить изменения в реестр, рекомендуется создать резервную копию всех ценных данных на компьютере.

Клавиша Тип Описание
HKCU\Software\Microsoft\VBA\Security\TimeStampURL REG_SZ URL-адрес предпочитаемого сервера меток времени. (Обязательно)
HKCU\Software\Microsoft\VBA\Security\TimeStampRetryCount REG_DWORD Количество попыток подключения редактора Visual Basic к серверу меток времени до сбоя. (Необязательно . Если не задать этот параметр, редактор Visual Basic попытается связаться с сервером только один раз)
HKCU\Software\Microsoft\VBA\Security\TimeStampRetryDelay REG_DWORD Количество секунд (в миллисекундах), которое редактор Visual Basic будет ожидать между повторными попытками подключения к серверу меток времени. (Необязательно. Если не установить этот параметр, между попытками не будет задержки)

После добавления рабочей записи TimeStampURL редактор Visual Basic будет автоматически добавлять метку времени каждый раз, когда вы подписываете макрос цифровой подписью.

Дополнительные примечания

  • Рекомендуется подписывать макросы только после того, как ваше решение будет протестировано и готово к распространению: когда код в подписанном макрос-проекте каким-либо образом изменяется, его цифровая подпись удаляется. Однако если на компьютере имеется действительный цифровой сертификат, который ранее использовался для подписания макроса, при сохранении макрос автоматически подписывается заново.
  • Один из способов предотвратить случайное изменение проекта макроса и аннулирование подписи пользователями — заблокировать проект макроса перед применением подписи. Ваша цифровая подпись гарантирует, что проект не был подделан с момента его подписания, но она не доказывает, что вы написали проект. Даже если вы заблокировали свой макрос-проект, другой пользователь по-прежнему может заменить вашу подпись другой. Корпоративные администраторы также могут повторно подписывать шаблоны и надстройки, чтобы гарантировать, что на компьютерах компании работает только утвержденный контент.
  • При создании надстроек, меняющих код макросов, нужно разработать способ проверки проекта на наличие цифровой подписи и, если проект подписан, выводить для пользователя предупреждение о следствиях внесения изменений.
  • Пользователи, использующие коммерческие сертификаты, могут столкнуться с блокировками из-за ограничения поддерживаемых хэш-алгоритмов при подписывании. Вы можете добавить реестр DWORD"ключ-значение" V1HashEnhanced , чтобы выбрать другой алгоритм хеширования, в разделе HKCU\SOFTWARE\Microsoft\VBA\Security с правилами алгоритма значений (1 для SHA1, 2 для SHA256, 3 для SHA384, 4 для SHA512 и другие для MD5). Этот параметр доступен в последних версиях канала CC.

Подробнее

Включение и отключение макросов в файлах Microsoft 365

Примечание

Эта статья была создана человеком с использованием искусственного интеллекта (ИИ).