Установить разрешение на чтение сертификата из командной строки

Может ли кто-нибудь указать мне правильное направление для управления разрешениями на чтение сертификатов из командной строки? Я пишу сценарий установки нашего сертификата, и мне нужно разрешить NetworkService доступ к 2 сертификатам в хранилище «Локальный компьютер\Персональный\Сертификаты».

заранее спасибо


person jaspernygaard    schedule 31.08.2011    source источник


Ответы (1)


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

Вот скрипт powershell. Он основан на FindPrivateKey.exe от Microsoft.

# Use FindPrivateKey.exe (From Windows SDK) to get the file name of the private key.
$s = cmd /c "FindPrivateKey.exe My LocalMachine -t   `"9D1F685D554E5B04C591D7967FB0D151153A25D8`" -a"

# Grant read access on the private key
cmd /c "cacls.exe `"$s`" /E /G `"IIS_IUSRS`":R"
person Jamey    schedule 31.08.2011
comment
Кажется, я получил FindPrivateKey.exe из примеров Windows Communication Foundation (WCF) @ microsoft.com/download/en/. - person Jamey; 01.09.2011
comment
Спасибо, у меня есть FindPrivateKey.exe - попробую! - person jaspernygaard; 01.09.2011
comment
Я помещаю это в пакетный скрипт, и по какой-то странной причине findprivatekey.exe не находит указанный сертификат при запуске из пакетного файла, но отлично работает из командной строки!? - person jaspernygaard; 01.09.2011
comment
Вы запускаете пакетный скрипт под той же учетной записью пользователя, что и при запуске из командной строки? Если вы использовали мой пример, это powershell. В таком случае это файл .ps1? - person Jamey; 01.09.2011
comment
Да, используя ту же консоль для вызова метода findprivatekey.exe. При вызове из командного файла он не возвращает путь к сертификату — когда он находится непосредственно в консоли, он отлично его находит. Странный... - person jaspernygaard; 02.09.2011
comment
У меня работает из dos и powershell. Вы уверены, что правильно расставили цитаты? В приведенном выше примере предполагается, что вы находитесь в PowerShell. Для dos кавычки немного другие. Я создал файл .bat следующим образом: echo find из оболочки dos FindPrivateKey.exe My LocalMachine -t 9D1F685D554E5B04C591D7967FB0D151153A25D8 -a echo find из powershell powershell -command ./find-privatekey.ps1 pause - person Jamey; 02.09.2011
comment
Ааа, я получаю ключ по его имени, и, к сожалению, в строке есть локализованные символы. Так что это была основная ошибка UTF8. Спасибо за помощь! - person jaspernygaard; 06.09.2011