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.
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_scriptphả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
roothoặcAdministrator. - 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: ALLchobash,powershell.exe,systemctl.
Yêu cầu quyền của từng middleware
| Middleware | Quyền cần thiết | Ví dụ after_script |
|---|---|---|
| nginx | Quyề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 .bak | nginx -t && nginx -s reload |
| Apache | Quyền đọc/ghi đối với thư mục chứa SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile | systemctl restart httpd.service hoặc systemctl restart apache2.service |
| Tomcat | Quyề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úng | JAVA_HOME + shutdown.sh + startup.sh |
| IIS | Script 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ời | Không cần cấu hình, script tích hợp tự xử lý |
- 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,systemctlsử dụng đường dẫn tuyệt đối), vui lòng lấyservers[].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ảishutdown.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
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ì
roothoặc quản trị viên. config.yamlcó 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[].formattrỏ 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
.bakhay 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,bashhoặcsystemctlđầ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.