Chuyển tới nội dung chính

Yêu cầu quyền khi chạy

Khi clmBot thực hiện tự động gia hạn chứng chỉ, cần đọc ghi các tệp chứng chỉ mục tiêu, đồng thời sau khi gia hạn cần tải lại hoặc khởi động lại dịch vụ middleware tương ứng. Bài viết này mô tả cấu hình quyền tối thiểu được khuyến nghị trong các tình huống middleware khác nhau.

Thông tin

Lệnh reload / restart của middleware được định nghĩa trong trường servers[].after_script của config.yaml, người dùng có thể tự điều chỉnh theo môi trường thực tế. clmBot không yêu cầu chạy lâu dài bằng các tài khoản quyền cao như root hoặc Administrator.

Nguyên tắc quyền tối thiểu

Khuyến nghị sử dụng tài khoản hệ thống chuyên dụng (ví dụ clmbot) để chạy clmBot:

  • Chỉ cấp cho tài khoản đó quyền cần thiết để đọc cấu hình clmBot, thư mục nhật ký và điểm cài đặt chứng chỉ mục tiêu.
  • Chỉ cấp quyền ghi đối với các tệp chứng chỉ, tệp khóa riêng do clmBot quản lý và thư mục chứa chúng.
  • Chỉ cho phép thực thi các lệnh reload / restart của middleware đã được xác nhận, before_script, after_script phải được kiểm tra thủ công trước khi cấp quyền từng lệnh.

Không khuyến nghị:

  • Để clmBot chạy lâu dài với danh tính root hoặc Administrator.
  • Mở toàn bộ quyền kiểm soát thư mục cấu hình middleware, thư mục chứng chỉ hoặc dịch vụ hệ thống cho clmBot.
  • Cấp quyền thực thi không giới hạn hoặc NOPASSWD: ALL cho bash, powershell.exe, systemctl.

Yêu cầu quyền của từng middleware

MiddlewareQuyền cần thiếtVí dụ after_script
nginxQuyền đọc/ghi đối với tệp chứng chỉ (.crt), chuỗi CA (tùy chọn), tệp khóa riêng (.key) và thư mục chứa chúng, dùng để ghi chứng chỉ mới và tạo bản sao lưu .baknginx -t && nginx -s reload
ApacheQuyền đọc/ghi đối với thư mục chứa SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFilesystemctl restart httpd.service hoặc systemctl restart apache2.service
TomcatQuyền đọc/ghi đối với chứng chỉ PEM/khóa riêng tư hoặc tệp JKS keystore và thư mục chứa chúngJAVA_HOME + shutdown.sh + startup.sh
IISScript PowerShell tích hợp của clmBot nhập PFX và cập nhật liên kết trang, cần quyền quản trị viên; tạo và dọn dẹp tệp PFX tạm thờiKhông cần cấu hình, script tích hợp tự xử lý
Thông tin
  • Tập lệnh được tự động tạo qua chức năng phát hiện chứng chỉ sẽ sử dụng đường dẫn tuyệt đối của lệnh (ví dụ nginx đi kèm tham số -p, -c, systemctl sử dụng đường dẫn tuyệt đối), vui lòng lấy servers[].after_script được tạo thực tế làm chuẩn.
  • Nếu Tomcat do systemd quản lý, tập lệnh được tự động tạo là systemctl restart <tomcat 服务名> chứ không phải shutdown.sh / startup.sh.

Ví dụ cấu hình sudoers trên Linux

Các ví dụ sau chỉ thể hiện mức độ ủy quyền, đường dẫn thực tế vui lòng điều chỉnh theo máy chủ đích.

nginx:

clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -t
clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -s reload

Apache:

clmbot ALL=(root) NOPASSWD: /bin/systemctl restart apache2.service

Tomcat:

clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/shutdown.sh
clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/startup.sh

Ví dụ về quyền thư mục chứng chỉ

chown -R root:clmbot /etc/ssl/example
chmod 0750 /etc/ssl/example
chmod 0640 /etc/ssl/example/site.crt /etc/ssl/example/ca.crt
chmod 0640 /etc/ssl/example/site.key

Nếu muốn cho phép clmBot ghi và sao lưu các tệp nêu trên, bạn có thể dùng ACL để cấp quyền chính xác:

setfacl -m u:clmbot:rwx /etc/ssl/example
setfacl -m u:clmbot:rw- /etc/ssl/example/site.crt
setfacl -m u:clmbot:rw- /etc/ssl/example/site.key

Bảng kiểm tra quyền trước khi triển khai

Mẹo

Trước khi triển khai clmBot, bạn nên xác nhận từng mục cấu hình quyền sau đây.

  • clmBot có chạy bằng tài khoản chuyên dụng hay không, thay vì root hoặc quản trị viên.
  • config.yaml có chỉ cho phép các tài khoản cần thiết đọc và ghi hay không.
  • Tệp chứng chỉ mà mỗi servers[].format trỏ tới có chỉ mở quyền đọc ghi cần thiết hay không.
  • Thư mục chứa tệp chứng chỉ có cho phép tạo và dọn dẹp tệp sao lưu .bak hay không.
  • before_script, after_script đã được kiểm tra thủ công hay chưa.
  • sudoers có chỉ chứa các lệnh chính xác hay không, thay vì ALL, bash hoặc systemctl đầy đủ.
  • Quyền reload hoặc restart của nginx / Apache / Tomcat có chỉ bao phủ đúng phiên bản mục tiêu hay không.
  • Chế độ dịch vụ (clm-bot server) có địa chỉ và cổng lắng nghe phù hợp với chính sách tường lửa của máy chủ hay không.