이것은 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 정책 공급자
Active Directory 정책 공급자의 URL 확인
# 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 이상에서만 작동합니다. GUI 지침은 아래를 참조하십시오). 비 도메인 템플릿을 생성 한 후 정책이 추가되었는지 확인하십시오. 그렇지 않으면 정책이 새로 고쳐지지 않아 표시되지 않습니다.
$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
등록 정책 Windows 2012 R2 이전
- 인증서 MMC를 엽니 다
- 개인 인증서 저장소로 드릴 다운
- "인증서"를 마우스 오른쪽 단추로 클릭하고 모든 작업 / 고급 작업 / 관리를 선택하십시오.
- 상황에 맞는 메뉴에서 등록 정책
- "추가"버튼을 클릭하십시오
- 등록 정책의 URL 붙여 넣기
- 인증 유형으로 사용자 이름 / 암호를 선택하십시오.
- "서버 확인"버튼을 클릭하고 도메인을 포함한 도메인 자격 증명을 입력하십시오
- 성공적으로 확인했다면 "추가"버튼을 클릭하십시오
- 등록 정책을 선택하고 "속성"버튼을 클릭하십시오
- "자동 등록 및 갱신 가능"상자가 선택되어 있는지 확인하십시오
- "등록시 강력한 확인 필요"를 확인한 적이 없으므로 해당 내용이 무엇인지 모릅니다.