[server] Powershell이 ​​PKI 인증서를 원격으로 삭제

최근에 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 일 때 스크립트는 출력을 제공하지 않습니다 (단순히 새로운 터미널 라인). 오류가없고 인증서가 삭제되지 않습니다.
  • 스크립트 -WhatIfRemove-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

그러면 템플릿의 버전 번호가 증가하고 자동 등록 기능이있는 네트워크 시스템은 기존 인증서를 삭제하고 새 인증서로 등록합니다.

이 작업을 수행하는 특정 템플릿에 대해 자동 등록이 필요하지만 게시 된 스크립트에 대한 솔루션이 선호되는 답변입니다.


답변