signtool.exe Ошибка: Ошибка SignerSign () (-2147220492 / 0x800403f4) при подписании макроса Excel - PullRequest
0 голосов
/ 15 февраля 2020

В настоящее время я пытаюсь подписать макросы VBA в сценариях Excel и Word и Powershell с помощью cmd.

Для этой цели я использую Microsoft signtool.exe в составе Windows 10 SDK: https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/

Подписание сценариев Powershell с помощью следующей команды работает нормально:

signtool.exe sign / f "testca.pfx" / fd SHA256 / p "123456 "" test.ps1 "

Для подписи макросов в документах Office также требуются" Пакеты предметного интерфейса Microsoft Office для цифровой подписи проектов VBA ": https://www.microsoft.com/en-us/download/confirmation.aspx?id=56617

Я скачал .exe и выполнил его.

Регистрация файлов DLL с помощью: "regsvr32" также работала. Пути к файлам .dll видны в реестре.

Microsoft Visual C ++ 2015-2019 Распространяется также (x86).

Так что теоретически я должен теперь иметь возможность подписывать макросы Excel , Однако мой сервер получает сообщение об ошибке с кодом ошибки, о котором я ничего не могу найти в Google.

Вот полный вывод:

Были рассмотрены следующие сертификаты :
Выдано: TestCA
Выдано: TestCA
Срок действия истекает: Среда, 03 февраля 08:53:09 2021
SHA1 га sh: E19CE363C88CDBCE677FA170008D0AB0D98A02D C

После фильтра EKU остались одни сертификаты. После истечения срока действия фильтра осталось 1 сертификат. После фильтра закрытого ключа осталось 1 сертификат. Был выбран следующий сертификат:
Выдан: TestCA
Выдан: TestCA
Срок действия истекает: Среда, 03 февраля 08:53:09 2021
SHA1 га sh: E19CE363C88CDBCE677FA170008D0AB0D98A02D C

Будут добавлены следующие дополнительные сертификаты: Готово Добавление
Дополнительная ошибка хранилища SignTool: произошла непредвиденная внутренняя ошибка.
Информация об ошибке: «Ошибка: Ошибка SignerSign (). (-2147220492 / 0x800403f4») )

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

  • Частный компьютер win10:. Возможно подписание ps1 и .xlsm
  • ВМ с win10 с работы: возможно подписание .ps1 и .xlsm

  • Частная ВМ с win 7: только. подпись ps1 работает

  • Частная виртуальная машина с Win10: только подпись .ps1 работает
  • TerminalServer с Windows Server 2012: работает только подпись .ps1

Что ты Вероятно, можно сказать, что signtool.exe работает как таковой, потому что я могу подписывать скрипты PowerShell на всех машинах. Но подписывание макросов не всегда работает. Возможно, это как-то связано с пакетами интерфейса?

Надеюсь, у кого-то уже была такая же проблема, и она может помочь. Потому что я схожу с ума от этого. Большое спасибо!

1 Ответ

1 голос
/ 18 февраля 2020

Ну, это заняло у меня много времени, но сейчас я в порядке. Если у кого-то еще есть такая же проблема:

. «Пакеты субъектного интерфейса Microsoft Office для цифровой подписи проектов VBA» .zip содержат файл readme.txt, в котором говорится, что «Microsoft Visual C ++ Redistributal (x86)» должен быть установлен. Ссылка за ним скачала «Microsoft Visual C ++ 2015-2019 Redistributal (x86)», которая является последней версией.

Я сейчас протестировал все доступные версии последних лет, и единственная рабочая - это 2010 версия. Я не знаю, почему readme.txt ссылается на другую версию, но ошибка и «решение» определенно воспроизводимы.

В любом случае, используйте Visual C ++ 2010 и все в порядке!

...