Включите политике Приема Сертификата и Запросу использование Сертификата PowerShell

Прямо сейчас я делаю следующее для запроса сертификата с сервера CEP:

  • Открытый gpedit.msc
  • Под Конфигурацией компьютера> Windows Settings> Настройки безопасности> политики С открытым ключом, дважды щелкают по "Certificate Services Client - Certificate Enrollment Policy"
  • Включить
  • Введите URI CEP
  • Переключитесь на Имя пользователя/Аутентификацию по паролю
  • Проверьте (обеспечьте Creds),
  • Откройте MMC и импортируйте снимок Сертификатов в
  • Перейдите к Сертификатам> Персональный
  • Щелкните правой кнопкой>, Запрашивают Новый Сертификат
  • Введите "больше информации" (CN, Имя DNS, и т.д.)
  • Обеспечьте Creds

После этого у меня есть сертификат от CEP; однако, это - болезненный процесс, чтобы сделать вручную. Там какой-либо путь состоит в том, чтобы автоматизировать это в Сервере 2008 (и 2012)? Вся информация, которую я могу найти об этом, говорит, как установить сервисы CEP для создания сервера сервером политики приема (ничто о фактическом запросе нового сертификата или включении ее на стороне клиента). Действительно ли возможно автоматизировать это?

Похоже, что этот процесс добавляет много данных под HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Cryptography. Я могу вручную добавить это (и имитировать GUID/ServiceID)?

8
задан 16 December 2014 в 00:56
3 ответа

У меня нет полного решения, однако я могу посоветовать начальные точки. Мой PKI-модуль PowerShell имеет возможность регистрировать конечную точку службы регистрации, начиная с Windows 7 / Windows Server 2008 R2 (обратите внимание, что Windows Server 2008 не поддерживает службы регистрации). Вот пример регистрации политики: http://en-us.sysadmins.lv/Lists/Posts/Post.aspx?ID=101

относительно регистрации. Эта серия сообщений блога может дать вам некоторое представление о том, как использовать COM-интерфейсы CertEnroll для выполнения регистрации сертификатов в PowerShell. Нет ничего о веб-сервисах регистрации (к сожалению), но методы те же. Вам нужно будет начать с этого интерфейса: IX509CertificateRequestPkcs10V2

HTH

0
ответ дан 2 December 2019 в 23:07

Я предполагаю, что ваши запросы на сертификат сделаны с использованием шаблона. В этом случае используйте GPO Public Key Policies / Certificate Services Client - Auto-Enrollment Settings для принудительной автоматической регистрации. Вы также должны убедиться, что ACL шаблона имеет отметки Enroll и AutoEnroll либо для компьютеров домена, либо для пользователей домена (или любого другого объекта acl, в зависимости от целевой аудитории). и политику конфигурации компьютера, которую можно использовать в зависимости от того, является ли это сертификатом компьютера или сертификатом пользователя, который вы пытаетесь отправить. Регистрация начинается, как только политика отправляется (обычно около 15 минут) после связывания и принудительного применения объекта групповой политики.

3
ответ дан 2 December 2019 в 23:07

Этот процесс я использовал в Windows 2012 R2 и выше. Весь код PowerShell запускался из командной строки PowerShell с повышенными привилегиями. Полная автоматизация остается в качестве упражнения для пользователя.

Необходимое условие

Убедитесь, что на вашем сервере сертификатов есть шаблон, для которого на вкладке «Тема» выбран переключатель «Предоставлять в запросе». Поскольку это не машина AD, сервер сертификатов не может надлежащим образом запросить информацию в Active Directory.

Экспортировать корневой центр

Экспортировать сертификат доверенного корневого центра сертификации на свой сервер сертификатов, а затем скопировать этот файл сертификата на целевой сервер

certutil --% -ca.cert <name of certificate file>

Доверять корневому центру

Импортировать этот сертификат в доверенный корневой центр сертификации на вашем Целевой сервер

$PathToCertificate=<name of certificate file>
$RootCertificate=Get-PfxCertificate -FilePath $PathToCertificate
$AlreadyExists=Get-ChildItem -Path "Cert:\LocalMachine\Root" | Where-Object { $_.Thumbprint -eq $RootCertificate.Thumbprint }
if ($AlreadyExists -eq $null) { Import-Certificate -CertStoreLocation "Cert:\LocalMachine\Root" -FilePath $PathToCertificate }
else { Write-Warning "Root certificate already installed" }

Поставщик политики Active Directory

Определите URL-адрес для поставщика политики Active Directory

# Get AD Configuration Context
$RootDSE=[System.DirectoryServices.DirectoryEntry]::new("LDAP://RootDSE")
$ConfigContext="CN=Enrollment Services,CN=Public Key Services,CN=Services,"+$RootDSE.configurationNamingContext
# Get name of Enterprise Root Certificate Autority server
$Server=Get-ADObject -SearchBase $ConfigContext -Filter "*"
if ($Server.Count -eq 1) { throw "No Enterprise Root Certificate Autority server exists" }
else { $Server=$Server[1].Name }
# Get Enrollment URL
$ConfigContext="CN=$Server,"+$ConfigContext
$EnrollmentURL=(Get-ADObject -SearchBase $ConfigContext -Filter "*" -Properties "msPKI-Enrollment-Servers" | Select-Object -ExpandProperty "msPKI-Enrollment-Servers").Split("`n") | Where-Object { $_ -like "http*" }
if ($EnrollmentURL -eq $null) { $EnrollmentURL="" }
# Get AD Enrollment Policy URL
$Server=$Server+$RootDSE.configurationNamingContext.Value.Replace("CN=Configuration","").Replace(",DC=",".")
$WMI=Get-WmiObject -ComputerName $Server -Namespace "root\WebAdministration" -Class Application | Where-Object { $_.Path -eq "/ADPolicyProvider_CEP_UsernamePassword" }
if ($WMI -ne $null) { $PolicyURL="https://"+$Server+$WMI.Path+"/service.svc/CEP" }
else { $PolicyURL="" }
Write-Output "Enrollment URL = $EnrollmentURL"
Write-Output "Policy URL = $PolicyURL"

Политика регистрации

Добавьте политику регистрации на целевой сервер (это работает только в Windows 2012 и выше. Инструкции по графическому интерфейсу , увидеть ниже). Убедитесь, что политика добавлена ​​после создания не доменного шаблона, в противном случае она не будет отображаться, так как политика не обновляется.

$User="<your domain name>\<your domain user name>"
$Pass="<Your domain password>"
$SecPass=ConvertTo-SecureString -String $Pass -AsPlainText -Force
$Cred=[System.Management.Automation.PSCredential]::new($User,$SecPass)
Add-CertificateEnrollmentPolicyServer -Url $PolicyURL -context Machine -NoClobber -AutoEnrollmentEnabled -Credential $Cred

Получите сертификат.

Теперь вы сможете подать заявку на сертификат, используя нужный шаблон.

$DNS="<FQDN of your server>"
$URL=Get-CertificateEnrollmentPolicyServer -Scope All -Context Machine | Select-Object -ExpandProperty Url | Select-Object -ExpandProperty AbsoluteUri
$Enrollment=Get-Certificate -Url $URL -Template "<Template name (not display name)>" -SubjectName "CN=$DNS" -DnsName $DNS -Credential $Cred -CertStoreLocation cert:\LocalMachine\My
$Enrollment.Certificate.FriendlyName=$DNS

Enrollment Policy Pre-Windows 2012 R2

  1. Откройте MMC сертификатов.
  2. Перейдите к личному хранилищу сертификатов.
  3. Щелкните правой кнопкой мыши «Сертификаты» и выберите «Все задачи/Дополнительные операции/Управление».
  4. Политики регистрации в контекстном меню
  5. Нажмите кнопку «Добавить»
  6. Вставьте URL-адрес политики регистрации
  7. Выберите имя пользователя /password в качестве типа аутентификации
  8. Нажмите кнопку «Подтвердить сервер» и введите учетные данные домена, включая домен
  9. Если вы успешно прошли проверку, нажмите кнопку «Добавить»
  10. Выберите политику регистрации и нажмите кнопку «Свойства»
  11. Убедитесь, что установлен флажок «Включить автоматическую регистрацию и продление»
  12. Я никогда не устанавливал флажок «Требовать строгой проверки во время регистрации», поэтому я не знаю, что он делает
3
ответ дан 13 May 2020 в 16:47

Теги

Похожие вопросы