С чего начать создание сценария Powershell для этого? - PullRequest
2 голосов
/ 04 декабря 2011

Если мне нужно было дать сертификату дополнительное разрешение, как описано ниже, с чего мне начать в Powershell?Должен быть исполняемый файл командной строки Windows, с которого мне нужно начинать с командной строки.Только тогда я мог подумать о написании этого сценария PowerShell, верно?

  1. Нажмите Пуск, введите mmc в поле Поиск программ и файлов и нажмите клавишу ВВОД.
  2. В меню Файл выберите Добавить / удалить оснастку.
  3. В разделе Доступные оснастки дважды щелкните Сертификаты.
  4. Выберите учетную запись компьютера и нажмите кнопку Далее.
  5. Нажмите Локальный компьютер, а затем нажмите Готово.Нажмите ОК.
  6. В разделе Корень консоли, Сертификаты (локальный компьютер) в Личном хранилище нажмите Сертификаты.
  7. Щелкните правой кнопкой мыши сертификат xxAzurehost1, который был создан ранее.Выберите «Все задачи»> «Управление личными ключами».Нажмите Добавить, а затем Дополнительно.Нажмите Locations и выберите свой локальный компьютер.Нажмите Найти сейчас.Выберите NETWORK SERVICE в результатах поиска и нажмите OK.Нажмите ОК.В окне Разрешения для закрытых ключей xxxazurehost1 выберите СЕТЕВОЙ СЕРВИС и дайте разрешения на чтение.Нажмите ОК.

1 Ответ

4 голосов
/ 05 декабря 2011

Для управления ACL для закрытого ключа все, что вам нужно сделать, это отредактировать файл ACL.Хитрость заключается в том, чтобы найти какой файл.

Закрытые ключи хранятся в:

%ProgramData%\Microsoft\Crypto

В XP:

C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto

Здесь вы увидите ключи, организованныеалгоритм, например, DSS, RSA.

Хранилище пользователей будет подпапкой с SID пользователя.Хранилище локального компьютера будет находиться в подпапке:

MachineKeys

Вот способ получить файл, в котором хранится информация о секретном ключе для вашего сертификата.

  1. Сначала перейдите влокальный магазин личных сертификатов:

    PS> cd cert:\LocalMachine\My
    
  2. Теперь вам нужно получить ручку для вашего сертификата.Есть несколько способов сделать это, вот один с использованием отпечатка:

    $cert = dir | ? {$_.Thumbprint -eq "232820EEBF7DBFA01EE68A28BA0450671F862AE1"}
    
  3. Теперь вы можете найти имя файла с секретным ключом, например:

    $fileName = $cert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
    $keyFile = dir -Path "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto" -Recurse | ? {$_.Name -eq $fileName}
    
  4. $ keyFile будет объектом FileInfo, для которого можно изменить ACL с помощью Set-ACL или icacls.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...