C'est le processus que j'ai utilisé sur Windows 2012 R2 et supérieur. Tout le code PowerShell a été exécuté à partir d'une invite PowerShell élevée. L'automatisation complète est laissée en exercice à l'utilisateur.
Prérequis
Assurez-vous que vous disposez d'un modèle sur votre serveur de certificats sur lequel le bouton radio «Fournir dans la demande» est sélectionné dans l'onglet Objet. Étant donné qu'il ne s'agit pas d'une machine AD, le serveur de certificats ne peut pas interroger correctement Active Directory pour obtenir les informations.
Exporter la racine
Exportez le certificat de l'autorité de certification racine de confiance sur votre serveur de certificats, puis copiez ce fichier de certificat sur votre serveur cible
certutil --% -ca.cert <name of certificate file>
Faites confiance à la racine
Importez ce certificat vers l'autorité de certification racine de confiance sur votre serveur cible
$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" }
Fournisseur de stratégie Active Directory
Déterminer l'URL du fournisseur de stratégies 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"
Politique d'inscription
Ajoutez la stratégie d'inscription au serveur cible (cela ne fonctionne que sur Windows 2012 et supérieur. Pour les instructions de l'interface graphique, voir ci-dessous). Assurez-vous que la stratégie est ajoutée après avoir créé le modèle hors domaine, sinon il n'apparaîtra pas car la stratégie n'est pas actualisée.
$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
Obtenez le certificat
Vous devriez maintenant pouvoir vous inscrire pour un certificat en utilisant le modèle souhaité
$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
Politique d'inscription avant Windows 2012 R2
- Ouvrez les certificats MMC
- Accéder au magasin de certificats personnels
- Faites un clic droit sur "Certificats" et sélectionnez Toutes les tâches / Opérations avancées / Gérer
- Politiques d'inscription dans le menu contextuel
- Cliquez sur le bouton "Ajouter"
- Collez l'URL de la politique d'inscription
- Sélectionnez le nom d'utilisateur / mot de passe comme type d'authentification
- Cliquez sur le bouton "Valider le serveur" et entrez vos informations d'identification de domaine, y compris le domaine
- En supposant que vous avez réussi à valider, cliquez sur le bouton "Ajouter"
- Sélectionnez la politique d'inscription et cliquez sur le bouton "Propriétés"
- Assurez-vous que la case "Activer pour l'inscription et le renouvellement automatiques" est cochée
- Je n'ai jamais coché la case "Exiger une validation forte lors de l'inscription" donc je ne sais pas ce que ça fait