최근에 PKI를 다시 작성했으며 네트워크의 모든 클라이언트 컴퓨터에 발급 된 인증서를 삭제하고 싶습니다. Powershell의 직업인 것 같습니다! 따라서이 스크립트를 GPO에서 배포하고 SysVol에서 실행하고 시작시 클라이언트 컴퓨터에서 트리거되도록 작성했습니다.
set-location cert:\LocalMachine\My
$certname = $env:COMPUTERNAME + ".domain.com"
get-item * | %{
if($_.issuer -like "CN=IssuingCA*" -and $_.DnsNameList.unicode -like $certname) { remove-item .\$_.Thumbprint -Force }
}
관리자 권한 명령 프롬프트에서 :
- Ran 일 때 스크립트는 출력을 제공하지 않습니다 (단순히 새로운 터미널 라인). 오류가없고 인증서가 삭제되지 않습니다.
- 스크립트
-WhatIf
의Remove-Item
명령에 인수 가 추가 되면 오류가없고 인증서는 삭제되지 않습니다. - Remove-Item. \ CERTIFICATE-THUMBPRINT -Force가 실행되면 인증서가 삭제됩니다.
이것은 권한 문제입니까? 더 똑똑하고 간단한 방법이 있습니까?
감사!
답변
내 대답은 “이 작업을 수행하는 데 더 똑똑하고 간단한 방법이 있습니까?”입니다. 당신의 질문의 일부. 이 스크립트는 나를 위해 아빠 인증서를 제거하는 데 성공했습니다
$Path = 'Cert:\LocalMachine\AuthRoot\'
$CertList = @()
$CertList = Get-ChildItem -Path $Path | Where-Object {$_.Issuer -like "CN=GO*"}
foreach($Cert in $CertList){
remove-item "$($Path)$($Cert.Thumbprint)" -Force -WhatIf
}
-WhatIf
이 코드가 “copy \ paste \ run”folx에 위험하지 않도록 추가했습니다 . 이제, 당신은 적응해야합니다 $Path
, Where-Object
그리고 추가 $certname
변수를하지만, 위의 템플릿을 사용하면 진행해야한다.
답변
스크립트로 문제를 해결할 수 없었지만 목표를 달성하는 ‘더 똑똑하고 단순한’방법을 찾을 수있었습니다 .
인증 기관에서 :
- Rt 클릭
Certificate Templates
하고 선택Manage
- 교체하려는 인증서 템플릿을 Rt 클릭하고 선택하십시오.
Reenroll All Certificate Holders
그러면 템플릿의 버전 번호가 증가하고 자동 등록 기능이있는 네트워크 시스템은 기존 인증서를 삭제하고 새 인증서로 등록합니다.
이 작업을 수행하는 특정 템플릿에 대해 자동 등록이 필요하지만 게시 된 스크립트에 대한 솔루션이 선호되는 답변입니다.