Рейтинг:1

Как исправить «Нет доступных сертификатов подписи» в VBA?

флаг ne

У нас есть сценарий VBA в Outlook, который создает всплывающее окно при отправке внешних электронных писем. Судя по всему, срок действия подписи скрипта истек на выходных. Человека, подписавшего его, больше нет. Я вижу сертификат в центре сертификации на нашем контроллере домена, но не могу его обновить.

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

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

joeqwerty avatar
флаг cv
ТБХ, зачем вам это нужно? Что нужно бизнесу?
naps1saps avatar
флаг ne
Мы не хотим случайно отправлять внутренние электронные письма клиентам, это может иметь большое значение для нашего типа клиентов. Мы также не хотим, чтобы пользователи попались на подделку электронных писем, поскольку любое нарушение — это огромная сделка, которая может иметь финансовые последствия из-за регулирования и т. д. У нас есть баннер, но его довольно легко игнорировать, TBH. В нашей области пользовательские подсказки являются довольно стандартной процедурой.
Massimo avatar
флаг ng
VBA в 2021 году? *Действительно*?!?
Рейтинг:1
флаг us

Извините, я тут не большой знаток, но все же попробую добавить свои 5 копеек...

Прежде всего, вы пробовали самозаверяющий сертификат? Легче отлаживать, поможет протестировать локально. https://social.technet.microsoft.com/Forums/lync/en-US/6b06b276-4266-4f29-ae22-2a3c86c4238f/certificate-for-digital-signature?forum=outlook

Далее, вы уверены, что вместе с сертификатом импортировали закрытый ключ? Скорее всего, он вам понадобится, насколько я понимаю механизм подписи (извините, если введу вас в заблуждение; если вы покупаете идею закрытого ключа, пожалуйста, проверьте, как его туда установить: https://security.stackexchange.com/questions/25996/how-to-import-a-private-key-in-windows - вам понадобится PFX вместо CER, иначе закрытый ключ не будет импортирован).

Наконец, в какой контейнер в хранилище сертификатов вы импортировали свой сертификат? Это тоже может повлиять на результат. https://answers.microsoft.com/en-us/msoffice/forum/all/vba-i-installed-digital-signing-certificate-but/231529b1-8099-4c7b-9bb6-2c36aeba00a4

Шаги для получения сертификата для подписи

  1. На подписывающем компьютере откройте Управление сертификатами пользователей
  2. Щелкните правой кнопкой мыши Личный > Все задачи > Запросить новый сертификат
  3. Выбирать Политика регистрации Active Directory > Следующий
  4. Выберите Подписание кода шаблон и нажмите Зарегистрироваться

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

naps1saps avatar
флаг ne
У меня есть это в личном и доверенном корне и доверенном издателе. Глядя на эту последнюю ссылку, я совершенно убежден, что мне нужно экспортировать PFX, а не CER. Я думаю, что сначала у меня был импортированный PFX, который не работал, но это был не сертификат подписи кода. Я посмотрю еще раз, так что спасибо, что указали мне направление.
Alex avatar
флаг us
Насколько я понимаю, основное отличие в том, что должен присутствовать приватный ключ. Вы сможете проверить это с помощью этого руководства: https://knowledge.digicert.com/quovadis/ssl-certificates/ssl-general-topics/how-do-i-know-if-my-certificate-has-the -private-key-attached-within-windows.html
naps1saps avatar
флаг ne
Я не могу экспортировать закрытый ключ с сервера, поэтому, возможно, мне нужно вернуться к шагу 1 и создать новый сертификат, позволяющий экспортировать PFX? Я использовал метод перехода на HTTPS://%ServerFQDN/certsvr и запросил новый сертификат > расширенный > подпись кода > добавить строку запроса BASE64. Я не могу вспомнить, откуда я ее взял > скачать, но нет опции PFX или экспорта из корня ЦА ММС.
Alex avatar
флаг us
Отказ от ответственности: я не профессионал здесь. Сказав это, я все еще убежден, что вам нужен закрытый ключ.И имейте в виду, что сервер CA обычно *не* хранит закрытый ключ, так работает криптография. Вы *создаете* пару (закрытый ключ + открытый ключ) на своем компьютере разработчика, затем подписываете программное обеспечение своим *закрытым* ключом а затем вы распространяете свой *открытый* ключ среди своей аудитории, чтобы они могли проверить программное обеспечение. Следовательно, серверу ЦС не нужно хранить закрытый ключ — он ему не нужен, конец истории. Показывает ли MMC на CA, что сертификат содержит закрытый ключ?
naps1saps avatar
флаг ne
Если я перехожу на локальный компьютер и запрашиваю сертификат, который я проверил, отображаются все шаблоны, и подпись кода появляется, но недоступна. Я думаю, мне нужно пройти через это, как вы говорите, и пропустить сервер, поэтому я сосредоточусь на том, чтобы пройти через это. Мне может потребоваться войти в систему с моими повышенными учетными данными, чтобы заставить это работать. Еще раз спасибо.
Alex avatar
флаг us
Уважаемый @naps1saps, обратите внимание, что я не эксперт, а просто слепой гадатель, к сожалению :( Мне очень жаль, если мои предложения на самом деле просто отвлекут вас от вашей цели, но это вполне возможно, пожалуйста, имейте это в виду и оцените мои предположения и с вашей стороны.Удачи вам в ваших поисках, пожалуйста, опубликуйте ответ здесь, как только вы получите решение)
naps1saps avatar
флаг ne
Я понял. Я не заметил, что существует определенный сертификат MMC как для пользователя, так и для компьютера. Мне удалось получить сертификат, добавленный с помощью пользовательской MMC. Еще раз спасибо, что указали мне в этом направлении. Отредактировал ваш ответ, чтобы дать вам кредит.
naps1saps avatar
флаг ne
Что ж, я ближе, но теперь у меня проблемы с получением VBA для сохранения подписанного состояния в файл проекта. Очень расстраивает.
Alex avatar
флаг us
Рад слышать, что вы смогли это сделать!) Для следующего выпуска было бы неплохо создать отдельный вопрос.
naps1saps avatar
флаг ne
Я понял. Вы должны скомпилировать проект, прежде чем он сохранит подписанное состояние. Мне нравится, что собственная документация Microsoft не говорит, что это необходимо, а вместо этого в конце рекомендует это.
Alex avatar
флаг us
Поздравляем! Спасибо, что поделились, может кому пригодится)
Alex avatar
флаг us
И просто добавлю сюда: понимаете, подписание чего-то на самом деле полностью замораживает его в его текущем состоянии. Даже если вы измените один бит, подпись будет недействительной. Вероятно, поэтому вы должны сначала скомпилировать, а затем только подписать - чтобы избежать ошибок или модификаций впоследствии.

Ответить или комментировать

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