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 สคริปต์จะไม่ส่งออก (เพียงแค่เทอร์มินัลบรรทัดใหม่) มันจะส่งกลับไม่มีข้อผิดพลาดและใบรับรองจะไม่ถูกลบ
  • เมื่ออาร์กิวเมนต์-WhatIfถูกเพิ่มเข้ากับRemove-Itemคำสั่งในสคริปต์อีกครั้งจะไม่มีข้อผิดพลาดและใบรับรองจะไม่ถูกลบ
  • เมื่อ Remove-Item. \ CERTIFICATE-THUMBPRINT -Force ถูกรันอยู่ใบรับรองจะถูกลบ

นี่เป็นปัญหาสิทธิ์หรือไม่ มีวิธีที่ชาญฉลาด / ง่ายกว่าในการทำเช่นนี้?

ขอบคุณ!


1
คุณลองremove-item -whatifไหม
MDMoore313

@BigHomie ใช่ฉันลองแล้ว ฉันดูเหมือนจะลบข้อมูลนั้นในการแก้ไข ...
Byron C.

1
ใน codeblock แบบมีเงื่อนไขของคุณให้เพิ่ม a write-hostเพื่อถ่ายโอนข้อมูลบางอย่างบนหน้าจอหากเงื่อนไขเป็นจริง ฉันสงสัยว่าสคริปต์กำลังประเมินว่าเป็นเท็จหรือไม่ (จะอธิบายข้อผิดพลาดและไม่ดำเนินการใด ๆ )
Colyn1337

@ Colyn1337 ใช่ มันกำลังประเมิน True
Byron C.

@ByronC จะเกิดอะไรขึ้นถ้า codeblock เป็นเพียงRemove-Item -Forceอะไร?
Colyn1337

คำตอบ:


6

คำตอบของฉันคือ "มีวิธีที่ชาญฉลาด / ง่ายกว่าในการทำเช่นนี้หรือไม่?" ส่วนหนึ่งของคำถามของคุณ สคริปต์นี้ประสบความสำเร็จในการลบใบรับรอง Go daddy ให้ฉัน

$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รหัสนี้ไม่เป็นอันตรายสำหรับ folx "copy \ paste \ run" ตอนนี้คุณจะต้องปรับ$Path, Where-Objectและเพิ่ม$certnameตัวแปร แต่แม่แบบดังกล่าวข้างต้นควรมีคุณจะไป


3

ถึงแม้ว่าผมจะไม่ได้รับสามารถที่จะแก้ปัญหาด้วยสคริปต์ผมสามารถที่จะหาวิธีที่ 'ชาญฉลาด / เรียบง่าย' เพื่อให้บรรลุเป้าหมายของฉัน

จากผู้ออกใบรับรอง:

  • Rt-Click Certificate TemplatesและเลือกManage
  • Rt-Click เทมเพลตใบรับรองที่คุณต้องการแทนที่และเลือก Reenroll All Certificate Holders

การทำเช่นนี้จะเป็นการเพิ่มหมายเลขเวอร์ชันของเทมเพลตและระบบเครือข่ายที่มีการลงทะเบียนอัตโนมัติจะเป็นการลบใบรับรองเก่าและลงทะเบียนด้วยใบรับรองใหม่

แม้ว่าสิ่งนี้จะต้องมีการลงทะเบียนอัตโนมัติสำหรับเทมเพลตเฉพาะที่ฉันทำงานด้วย แต่โซลูชันสำหรับสคริปต์ที่โพสต์จะเป็นคำตอบที่ดีกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.