Score:0

ฉันจะตั้งค่า ACL ของ CA โดยทางโปรแกรมได้อย่างไร

ธง th

เมื่อเปิดใช้คอนโซล CA (certsrv.msc) ฉันสามารถคลิกขวาที่ CA ของฉัน เลือก คุณสมบัติ จากนั้นฉันสามารถแก้ไข ACL ของ CA ของฉันใน ความปลอดภัย แท็บ เมื่อฉันแก้ไข การเปลี่ยนแปลงจะถูกนำไปใช้กับวัตถุโฆษณาที่:

CN=MY-CA,CN=บริการการลงทะเบียน,CN=บริการคีย์สาธารณะ,CN=บริการ,CN=การกำหนดค่า,DC=contoso,DC=com

เมื่อฉันดูในโปรแกรมแก้ไข ADSI รายการ ACL ที่แก้ไขจะไม่ได้รับการสืบทอด แต่จะนำไปใช้โดยตรง (ตามที่คาดไว้) แต่เมื่อฉันเปลี่ยน ACL ของวัตถุนี้โดยทางโปรแกรม e. กรัม โดย:

นำเข้าโมดูล ActiveDirectory
$path = 'โฆษณา:CN=MY-CA,CN=บริการการลงทะเบียน,CN=บริการคีย์สาธารณะ,CN=บริการ,CN=การกำหนดค่า,DC=contoso,DC=com'
$acl = Get-Acl -เส้นทาง $เส้นทาง
$acl.AddAccessRule(...)
ชุด Acl -เส้นทาง $เส้นทาง -AclObject $acl

จากนั้นฉันสามารถเห็นการเปลี่ยนแปลงเหล่านั้นในตัวแก้ไข ADSI แต่ฉันไม่เห็นการเปลี่ยนแปลงเหล่านั้นเมื่อฉันดู ACL ของ CA ของฉันผ่านทางคอนโซล CA

แล้วฉันทำอะไรผิดหรือเปล่า? ฉันต้องแก้ไขออบเจกต์อื่นโดยทางโปรแกรมด้วยหรือไม่


สิ่งที่ฉันพยายาม:

  • หลังจากการเปลี่ยนแปลง ฉันบังคับให้โฆษณาซิงค์กับ: repadmin /syncall /Aed
  • ฉันเริ่มบริการ CA ใหม่ ใบรับรอง

แต่ดูเหมือนจะไม่ใช่ปัญหา "การซิงค์" ...

Score:2
ธง cn

ACL เหล่านี้มีความแตกต่างกันบ้าง ACL บนวัตถุ AD มีผลเฉพาะรายการ AD และจะไม่เผยแพร่ลงไปยัง CA

ACL ที่คุณเห็นในคอนโซลการจัดการ CA ถูกจัดเก็บไว้ในการกำหนดค่า CA ในรีจิสทรี

ฉันไม่แน่ใจว่ามีวิธีง่ายๆ ในการแก้ไขสิทธิ์ใน CA โดยใช้ PowerShell แบบเนทีฟหรือไม่ (โดยไม่ต้องใช้เครื่องมือของบุคคลที่สาม) อย่างไรก็ตาม ผมขอแนะนำให้ใช้ PowerShell PKI โมดูลเพื่อลดความซับซ้อนของงาน โมดูลประกอบด้วยคำสั่งที่เกี่ยวข้องกับ ACL หลายคำสั่ง:

ปล. ฉันเป็นผู้เขียนโมดูล PSPKI นี้

ทุกคำสั่งมีตัวช่วยในตัวและแบบออนไลน์พร้อมตัวอย่างที่เป็นประโยชน์เกี่ยวกับวิธีใช้แต่ละคำสั่ง

cn flag
คุณต้องเริ่มบริการ CA ใหม่หลังจากเขียนไปยังรีจิสทรี CA อ่านการกำหนดค่าเมื่อเริ่มต้นบริการเท่านั้น และอย่ามองหาการเปลี่ยนแปลงจนกว่าจะเริ่มครั้งถัดไป
Score:0
ธง th

ขอบคุณคำแนะนำจาก Crypt32 และแหล่งข้อมูลเพิ่มเติม1ฉันมากับ นอกจากนี้ การเปลี่ยนแปลงที่จำเป็นที่ต้องดำเนินการในรีจิสทรีของ CA:

# รับตัวบ่งชี้ความปลอดภัยไบนารีของ CA จากรีจิสทรี
$sd_bin = Get-ItemPropertyValue -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\MY-CA' -ชื่อ 'ความปลอดภัย'

# สร้างวัตถุตัวอธิบายความปลอดภัยของมัน
$sd = New-Object -TypeName System.Security.AccessControl.CommonSecurityDescriptor -ArgumentList @($false, $false, $sd_bin, 0)

# แก้ไข DACL ในสถานที่
$sd.DiscretionaryAcl.AddAccess([System.Security.AccessControl.AccessControlType]::อนุญาต, "<SID>", <INT32_PERMISSIONS>, [System.Security.AccessControl.InheritanceFlags]::ไม่มี, [System.Security.AccessControl. PropagationFlags]::ไม่มี)

# แปลงตัวบ่งชี้ความปลอดภัยกลับเป็นรูปแบบไบนารี
$sd_bin_new = [System.Byte[]]::CreateInstance([System.Byte], $sd.BinaryLength)
$sd.GetBinaryForm($sd_bin_new, 0)

# เขียนกลับไปที่รีจิสทรี
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\MY-CA' -ชื่อ 'ความปลอดภัย' - ค่า $sd_bin_new

# เริ่มบริการใบรับรองใหม่
เริ่มบริการใหม่ - ชื่อ CertSvc

1อ่านเพิ่มเติม:

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา