| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| автоматизированный_запрос_к_цс_из_powershell [2023/05/30 15:09] – jp | автоматизированный_запрос_к_цс_из_powershell [2023/06/02 09:36] (current) – [Импортировать сертификат с закрытым ключом] jp |
|---|
| ===== Автоматизированный запрос к ЦС из PowerShell ===== | ===== Автоматизированный запрос к ЦС из PowerShell ===== |
| |
| Иногда нам нужно запросить сертификат у ЦС (в существующей PKI) из PowerShell. | Иногда нам нужно запросить сертификат у ЦС (в уже существующей PKI) из PowerShell. |
| |
| К примеру, это может потребоваться, если нам требуется издать сертификат для сервера, работающего на Windows Core. В этом случае, даже если мы подключимся оснасткой управления сертификатами удаленно - там не будет опции //request new certificate//, а будет возможность только сформировать offline-запрос к ЦС, что не всегда подходит по разным причинам. | К примеру, это может потребоваться, если нам требуется издать сертификат для сервера, работающего на Windows Core. В этом случае, даже если мы подключимся оснасткой управления сертификатами удаленно - там не будет опции //request new certificate//, а будет возможность только сформировать offline-запрос к ЦС, что не всегда подходит по разным причинам. |
| В таком случае делаем следующее. | В таком случае делаем следующее. |
| |
| 1. Перемещаемся в локальное хранилище: | 1. Перемещаемся в локальное хранилище |
| |
| cd Cert:\LocalMachine\My | cd Cert:\LocalMachine\My |
| 2. Создаем запрос к ЦС, используя нужный шаблон: | 2. Создаем запрос к ЦС, используя нужный шаблон |
| <WRAP prewrap> | <WRAP prewrap> |
| <code> | <code> |
| :!: //Файл в таком случае не нужно копировать на сервер, с которого был послан запрос.// | :!: //Файл в таком случае не нужно копировать на сервер, с которого был послан запрос.// |
| |
| 4. Смотрим номер запроса, который мы послали на ЦС, используя данный командлет: | 4. Смотрим номер запроса, который мы послали на ЦС, используя данный командлет |
| |
| Get-ChildItem -Path cert:\LocalMachine\Request\ | Get-ChildItem -Path cert:\LocalMachine\Request\ |
| <code> | <code> |
| $request = Get-ChildItem -Path Cert:\LocalMachine\Request\BD4211189267CDA4B69BAD32EDFCC68319AD41E | $request = Get-ChildItem -Path Cert:\LocalMachine\Request\BD4211189267CDA4B69BAD32EDFCC68319AD41E |
| | Get-Certificate -Request $request |
| </code> | </code> |
| |
| 6. Проверяем, что сертификат с закрытым ключом появился там, куда мы его и запрашивали - в хранилище //personal// локального компьютера. | 6. Проверяем, что сертификат с закрытым ключом появился там, куда мы его и запрашивали - в хранилище //personal// локального компьютера. |
| | |
| | ---- |
| | |
| | ==== Экспортировать сертификат с закрытым ключом ==== |
| | <WRAP prewrap> |
| | <code> |
| | $mypwd = ConvertTo-SecureString -String '1234' -Force -AsPlainText |
| | Get-ChildItem -Path Cert:\LocalMachine\My\553D577966D66F90F1EF711ABB40E3C027786FE9 | Export-PfxCertificate -FilePath C:\mypfx.pfx -Password $mypwd |
| | </code> |
| | </WRAP> |
| | |
| | ---- |
| | |
| | ==== Импортировать сертификат с закрытым ключом ==== |
| | |
| | Предположим, что нам требуется импортировать сертификат с закрытым ключом из PFX-файла в хранилище сертификатов локального компьютера. Сертификат защищен паролем. |
| | |
| | В этом случае, мы сначала перемещаемся в хранилище сертификатов локального компьютера, затем вызываем диалог запроса пароля и сохраняем его в переменную, а потом импортируем сертификат в локальное хранилище, передавая в качестве параметра пароль. |
| | |
| | <code> |
| | Set-Location -Path Cert:\LocalMachine\My |
| | $mypwd = Get-Credential -UserName 'Enter password below' -Message 'Enter password below' |
| | Import-PfxCertificate -FilePath C:\certs\cert.pfx -Password $mypwd.password |
| | </code> |
| | |
| | {{tag>Certificates PKI ADCS Microsoft Windows PowerShell}} |