Как добавить сертификат в хранилище сертификатов службы Windows из командной строки?

Вопрос или проблема

Я хочу добавить сертификат в хранилище сертификатов, принадлежащее службе Windows, с помощью командной строки. Пока единственное, что я нашел, это:

certutil -service -store ADAM_Instance-Name\My

Когда я запускаю его (вошедши в систему как я, в командной строке от имени администратора), он возвращает:

ADAM_Instance-Name\My
CertUtil: -store command FAILED: 0x80070057 (WIN32: 87)
CertUtil: Параметр неправильный.

Я пробовал обернуть имя Service\Store в двойные кавычки (такой же результат) и в одинарные кавычки (такой же результат), а также использовать прямую косую черту или пробел вместо обратной косой черты, оба способа дают:

ADAM_Instance-Name\My
CertUtil: -store command FAILED: 0x80070002 (WIN32: 2)
CertUtil: Система не может найти указанный файл.

Может кто-то помочь с синтаксисом этой команды или предложить альтернативный метод?

Вы не можете импортировать сертификат в личное (Мое) хранилище другого пользователя. Я не уверен, сработает ли “Запуск от имени…”, поскольку эта операция требует загрузки пользовательского профиля. Вы можете попробовать войти в систему под учетной записью службы (если это возможно) и импортировать сертификат.

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

Ответ или решение

Чтобы добавить сертификат в хранилище сертификатов Windows-сервиса с помощью командной строки, вы можете воспользоваться несколькими методами. Однако важно отметить, что для некоторых операций, связанных с хранилищем сертификатов, требуется учитывать конкретные условия и права доступа.

Способ 1: Использование certutil для импорта сертификата в LocalMachine

Вы можете добавить сертификат в хранилище LocalMachine\My, а затем предоставить учетной записи службы права на доступ к закрытому ключу сертификата. Вот шаги, которые следует выполнить:

  1. Импортируйте сертификат в хранилище LocalMachine:
    Для этого используйте команду certutil. Команда может выглядеть следующим образом:

    certutil -addstore "My" путь\к\ВашемуСертификату.cer

    Если вам нужно импортировать сертификат с закрытым ключом, используйте -importpfx:

    certutil -importpfx "LocalMachine\My" путь\к\ВашемуСертификату.pfx
  2. Настройка прав доступа к закрытому ключу:
    После добавления сертификата важно предоставить вашей учетной записи службы необходимые разрешения на доступ к закрытому ключу.

    Найдите сертификат в LocalMachine\My с помощью certmgr.msc или командой certutil -store My, и выполните следующие команды:

    winpty icacls "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\{идентификатор_файла}" /grant "Имя_Учётной_Записи_Службы":R

    Замещаете {идентификатор_файла} на фактический идентификатор файла ключа и Имя_Учётной_Записи_Службы на имя учетной записи вашего сервиса.

Способ 2: Вход под учетной записью службы

Если возможно, также рекомендуется войти в систему под учетной записью службы и импортировать сертификат вручную:

  1. Подключитесь к учетной записи службы.
  2. Откройте certmgr.msc, который управляет хранилищем сертификатов пользователя.
  3. Перейдите в раздел Личные и импортируйте сертификат.

Примечания:

  • Убедитесь, что у вас есть необходимые права для выполнения этих операций. Эквивалентные права администратора могут потребоваться.
  • Если служба для обработки сертификатов запущена от имени специальной учетной записи (например, NT Service\YourService), важно, чтобы именно этой учетной записи были предоставлены права доступа к закрытому ключу.

Если возникнут дополнительные ошибки или трудности, предоставьте детали, и мы постараемся помочь.

Оцените материал
Добавить комментарий

Капча загружается...