Điểm:0

Làm cách nào tôi có thể đặt ACL của CA theo chương trình?

lá cờ th

Khi khởi chạy bảng điều khiển CA (certsrv.msc), tôi có thể nhấp chuột phải vào CA của mình, chọn Tính chất và sau đó tôi có thể sửa đổi ACL của CA của mình trong Bảo vệ chuyển hướng. Khi tôi sửa đổi nó, các thay đổi được áp dụng cho đối tượng AD tại:

CN=MY-CA,CN=Dịch vụ đăng ký,CN=Dịch vụ khóa công khai,CN=Dịch vụ,CN=Cấu hình,DC=contoso,DC=com

Khi tôi xem nó trong trình chỉnh sửa ADSI, các mục ACL đã sửa đổi không được kế thừa mà được áp dụng trực tiếp (như mong đợi). Nhưng khi tôi thay đổi ACL của đối tượng này theo chương trình, e. g. qua:

Nhập mô-đun ActiveDirectory
$path = 'AD:CN=MY-CA,CN=Dịch vụ đăng ký,CN=Dịch vụ khóa công khai,CN=Dịch vụ,CN=Cấu hình,DC=contoso,DC=com'
$acl = Get-Acl -Path $path
$acl.AddAccessRule(...)
Set-Acl -Path $path -AclObject $acl

Sau đó, tôi có thể thấy những thay đổi đó trong trình chỉnh sửa ADSI, nhưng tôi không thể thấy những thay đổi đó khi tôi xem ACL của CA của mình qua bảng điều khiển CA.

Vì vậy, tôi đang làm điều gì đó sai? Tôi có phải sửa đổi các đối tượng khác theo chương trình không?


Những gì tôi đã thử:

  • Sau khi thay đổi, tôi buộc AD phải đồng bộ hóa với: repadmin/syncall/Aed
  • Tôi đã khởi động lại dịch vụ CA certsvc

Nhưng nó dường như không phải là vấn đề "đồng bộ hóa" ...

Điểm:2
lá cờ cn

Các ACL này hơi khác nhau. Đối tượng ACL trên AD chỉ ảnh hưởng đến mục nhập AD và chúng không được truyền xuống CA.

ACL mà bạn thấy trong bảng điều khiển Quản lý CA, được lưu trữ trong cấu hình CA, trong sổ đăng ký.

Tôi không chắc liệu có cách nào dễ dàng để chỉnh sửa quyền trên CA bằng cách sử dụng PowerShell nguyên bản (không có công cụ của bên thứ 3) hay không. Tuy nhiên, tôi khuyên bạn nên sử dụng PKI PowerShell mô-đun để đơn giản hóa nhiệm vụ. Mô-đun chứa một số lệnh liên quan đến ACL:

tái bút Tôi là tác giả của mô-đun PSPKI này

Mọi lệnh đều có trợ giúp trực tuyến và tích hợp sẵn với các ví dụ hữu ích về cách sử dụng từng lệnh.

lá cờ cn
Bạn phải khởi động lại dịch vụ CA sau khi ghi vào sổ đăng ký. CA chỉ đọc cấu hình khi khởi động dịch vụ và không tìm kiếm các thay đổi cho đến lần khởi động tiếp theo.
Điểm:0
lá cờ th

Nhờ các gợi ý của Mật mã32 và một số nguồn bổ sung1, tôi nghĩ ra Ngoài ra những thay đổi cần thiết phải được thực hiện trong sổ đăng ký của CA:

# Nhận bộ mô tả bảo mật nhị phân của CA từ sổ đăng ký
$sd_bin = Get-ItemPropertyValue -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\MY-CA' -Tên 'Security'

# Tạo đối tượng mô tả bảo mật của nó
$sd = New-Object -TypeName System.Security.AccessControl.CommonSecurityDescriptor -ArgumentList @($false, $false, $sd_bin, 0)

# Sửa đổi DACL tại chỗ
$sd.DiscretionaryAcl.AddAccess([System.Security.AccessControl.AccessControlType]::Allow, "<SID>", <INT32_PERMISSIONS>, [System.Security.AccessControl.InheritanceFlags]::None, [System.Security.AccessControl. Cờ tuyên truyền]::Không có)

# Chuyển đổi bộ mô tả bảo mật trở lại dạng nhị phân
$sd_bin_new = [System.Byte[]]::CreateInstance([System.Byte], $sd.BinaryLength)
$sd.GetBinaryForm($sd_bin_new, 0)

# Viết nó trở lại sổ đăng ký
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\MY-CA' -Name 'Security' -Value $sd_bin_new

# Khởi động lại dịch vụ chứng chỉ
Khởi động lại dịch vụ -Name CertSvc

1Đọc thêm:

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.