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


9

최근에 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가 실행되면 인증서가 삭제됩니다.

이것은 권한 문제입니까? 더 똑똑하고 간단한 방법이 있습니까?

감사!


1
당신은 시도 했습니까 remove-item -whatif??
MDMoore313

@BigHomie. 네, 시도했습니다. 편집에서 그 정보를 삭제 한 것 같습니다 ...
Byron C.

1
조건부 코드 블록에서 조건부 write-host에 해당하는 경우 화면에 무언가를 덤프 하기 위해를 추가하십시오 . 스크립트가 거짓으로 평가되는지 궁금합니다 (오류 없음 및 조치 없음 설명).
Colyn1337

@ Colyn1337 p. True를 평가하고 있습니다.
바이런 C.

@ByronC. 코드 블록이 그냥 있으면 어떻게됩니까 Remove-Item -Force?
Colyn1337

답변:


6

내 대답은 "이 작업을 수행하는 데 더 똑똑하고 간단한 방법이 있습니까?"입니다. 당신의 질문의 일부. 이 스크립트는 나를 위해 아빠 인증서를 제거하는 데 성공했습니다

$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변수를하지만, 위의 템플릿을 사용하면 진행해야한다.


3

스크립트로 문제를 해결할 수 없었지만 목표를 달성하는 '더 똑똑하고 단순한'방법을 찾을 수있었습니다 .

인증 기관에서 :

  • Rt 클릭 Certificate Templates하고 선택Manage
  • 교체하려는 인증서 템플릿을 Rt 클릭하고 선택하십시오. Reenroll All Certificate Holders

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.