Вопрос или проблема
Я хочу добавить сертификат в хранилище сертификатов, принадлежащее службе 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
, а затем предоставить учетной записи службы права на доступ к закрытому ключу сертификата. Вот шаги, которые следует выполнить:
-
Импортируйте сертификат в хранилище
LocalMachine
:
Для этого используйте командуcertutil
. Команда может выглядеть следующим образом:certutil -addstore "My" путь\к\ВашемуСертификату.cer
Если вам нужно импортировать сертификат с закрытым ключом, используйте
-importpfx
:certutil -importpfx "LocalMachine\My" путь\к\ВашемуСертификату.pfx
-
Настройка прав доступа к закрытому ключу:
После добавления сертификата важно предоставить вашей учетной записи службы необходимые разрешения на доступ к закрытому ключу.Найдите сертификат в
LocalMachine\My
с помощьюcertmgr.msc
или командойcertutil -store My
, и выполните следующие команды:winpty icacls "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\{идентификатор_файла}" /grant "Имя_Учётной_Записи_Службы":R
Замещаете
{идентификатор_файла}
на фактический идентификатор файла ключа иИмя_Учётной_Записи_Службы
на имя учетной записи вашего сервиса.
Способ 2: Вход под учетной записью службы
Если возможно, также рекомендуется войти в систему под учетной записью службы и импортировать сертификат вручную:
- Подключитесь к учетной записи службы.
- Откройте
certmgr.msc
, который управляет хранилищем сертификатов пользователя. - Перейдите в раздел
Личные
и импортируйте сертификат.
Примечания:
- Убедитесь, что у вас есть необходимые права для выполнения этих операций. Эквивалентные права администратора могут потребоваться.
- Если служба для обработки сертификатов запущена от имени специальной учетной записи (например,
NT Service\YourService
), важно, чтобы именно этой учетной записи были предоставлены права доступа к закрытому ключу.
Если возникнут дополнительные ошибки или трудности, предоставьте детали, и мы постараемся помочь.