Назад | Перейти на главную страницу

Certreq -retrieve не может найти указанный ЦС

В настоящее время я пишу сценарий Powershell и столкнулся с трудностями. По сути, скрипт запрашивает, утверждает и получает новые сертификаты из нашего центра сертификации с помощью certreq.exe и certutil.exe.

Пока что у меня есть запрос и утверждение, работающие нормально, но как только я пытаюсь получить недавно утвержденный сертификат, я получаю сообщение «имя каталога недействительно» со ссылкой на центр сертификации. Я использую ту же строку -config для всех остальных команд, но она не работает при вызове certreq.exe -retrieve. Если я удалю его, мне будет предложено выбрать правильный CA из списка, из которого есть только один. Я бы очень хотел избежать этого, поскольку я пытаюсь автоматизировать продление более 450 сертификатов, и необходимость сидеть здесь и нажимать кнопку для каждого из них в некоторой степени сводит на нет весь смысл.

У кого-нибудь есть идеи?

Спасибо.


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

Скрипт Powershell работает как таковой:

  1. Создать .inf файл
  2. Запустите certreq.exe -new, используя сгенерированный файл inf, чтобы создать .req
  3. Запустите certreq.exe -submit со сгенерированным .req
  4. RequestID захватывается командой -submit и передается в certutil.exe -Resubmit для его утверждения.
  5. Запустить certreq -retrieve с захваченным RequestID, не удается найти ЦС, который использовался как в командах certreq -submit, так и certutil -resubmit.

У меня это работает в сценариях PowerShell:

invoke-expression -command "certreq -config `"$OnlineCA`" -Retrieve $RequestId `"$CertificateFileName`" "

Попробуйте использовать -config параметр. Посетите страницу TechNet для получения дополнительных сведений о вариантах, включенных в certreq.exe и certutil.exe.

https://technet.microsoft.com/en-us/library/dn296456.aspx

Я знаю, что слишком поздно отвечать на этот вопрос, но, надеюсь, это поможет кому-то другому.