Tham chiếu cấu hình
Hành vi của clmBot được điều khiển bởi tệp cấu hình config.yaml trong thư mục cài đặt. Tệp này được tạo tự động khi thực thi login, discover-certificate hoặc add-server, và cũng có thể chỉnh sửa thủ công.
Theo mặc định, clmBot đọc config.yaml từ thư mục hiện tại, cũng có thể chỉ định đường dẫn tệp cấu hình thông qua tham số toàn cục -c:
./clm-bot-linux-amd64 -c /opt/clm-bot/config.yaml update-certificate
Cấu trúc tổng thể
app:
base_url: https://<云端地址>
ignore_ssl: false
access_key: YOUR_ACCESS_KEY
access_secret: YOUR_ACCESS_SECRET
servers:
- id: nginx_pem
sub_code: <证书订阅号>
format:
pem:
cert_path: /etc/nginx/ssl/example.com.crt
ca_path: /etc/nginx/ssl/example.com.ca.crt
key_path: /etc/nginx/ssl/example.com.key
before_script: |
...
after_script: |
nginx -t && nginx -s reload
app: Cấu hình kết nối
| Trường | Mô tả |
|---|---|
base_url | Địa chỉ API đám mây, điền theo thông tin bàn giao, thông thường không cần sửa đổi |
ignore_ssl | Có bỏ qua xác thực chứng chỉ HTTPS hay không. Chỉ bật trong môi trường được kiểm soát có sử dụng chứng chỉ tự ký |
access_key | AccessKey do đám mây phân bổ |
access_secret | AccessSecret do đám mây phân bổ. Sau khi văn bản thuần túy được chương trình lưu lần đầu, nó sẽ tự động chuyển thành giá trị mã hóa bắt đầu bằng ENC1+ |
servers: Danh sách điểm cài đặt
Mỗi mục servers[] tương ứng với một điểm cài đặt chứng chỉ:
| Trường | Mô tả |
|---|---|
id | Định danh điểm cài đặt, nên sử dụng tên có ý nghĩa nghiệp vụ |
sub_code | Số đăng ký chứng chỉ, tương ứng với đăng ký chứng chỉ trong trang quản trị, clmBot sẽ lấy chứng chỉ mới nhất theo số này |
format | Định dạng chứng chỉ và đường dẫn tệp, chỉ có thể giữ một trong các loại pem, pfx, jks, iis, exchange |
before_script | Tập lệnh thực thi trước khi cập nhật, nếu tập lệnh thất bại sẽ làm gián đoạn quá trình cập nhật tại điểm cài đặt hiện tại |
after_script | Tập lệnh thực thi sau khi cập nhật, thường dùng để tải lại dịch vụ middleware |
format: Định dạng chứng chỉ
pem
Phù hợp với các tình huống sử dụng tệp PEM cho nginx, Apache HTTP Server, Tomcat, v.v.:
| Trường | Mô tả |
|---|---|
cert_path | Đường dẫn tệp chứng chỉ trang web. Khi cập nhật, ghi chứng chỉ lá; nếu ca_path trống, đồng thời ghi chuỗi chứng chỉ đầy đủ |
ca_path | Đường dẫn tệp chuỗi CA, có thể để trống |
key_path | Đường dẫn tệp khóa riêng |
pfx
Phù hợp với các dịch vụ cần gói chứng chỉ tệp đơn (PKCS#12):
| Trường | Mô tả |
|---|---|
path | Đường dẫn tệp PFX |
key_pass | Mật khẩu khóa riêng PFX, có thể để trống khi dịch vụ đích không yêu cầu mật khẩu |
jks
Phù hợp với các tình huống Java keystore như Tomcat:
| Trường | Mô tả |
|---|---|
path | Đường dẫn tệp JKS |
alias | Bí danh mục nhập chứng chỉ. Khi trống, chỉ có thể tự động suy ra khi keystore chỉ có một mục nhập |
key_pass | Mật khẩu khóa riêng của mục |
store_pass | Mật khẩu keystore |
iis
Áp dụng cho ràng buộc HTTPS của Windows IIS:
| Trường | Mô tả |
|---|---|
name | Tên site IIS, có thể xem trong IIS Manager |
addr | IP ràng buộc HTTPS, * nghĩa là tất cả IP |
port | Cổng ràng buộc HTTPS |
domain | Tên miền ràng buộc HTTPS, có thể để trống khi không có tên miền SNI |
Điểm cài đặt IIS do script tích hợp của clmBot tự động hoàn tất việc nhập chứng chỉ và cập nhật ràng buộc, thường không cần cấu hình script.
exchange
Áp dụng cho chứng chỉ dịch vụ Windows Exchange:
| Trường | Mô tả |
|---|---|
services | Danh sách tên dịch vụ Exchange cần kích hoạt chứng chỉ mới, chẳng hạn như ["IIS", "SMTP", "POP", "IMAP"] |
Hướng dẫn thực thi tập lệnh
before_script và after_script được thực thi theo thứ tự sau khi cập nhật chứng chỉ:
- Sao lưu tệp chứng chỉ cục bộ (tạo bản sao lưu
.bakkèm dấu thời gian). - Thực thi
before_script; nếu thất bại sẽ hủy bỏ việc cập nhật tại điểm cài đặt hiện tại. - Ghi chứng chỉ mới.
- Thực thi
after_scriptđể tải lại hoặc khởi động lại dịch vụ trung gian.
Khi chứng chỉ cục bộ đã là mới nhất, toàn bộ quá trình cập nhật (bao gồm cả script) sẽ bị bỏ qua; nếu cần buộc thực thi after_script, bạn có thể dùng tham số --force-after.
Script được thực thi trên Linux thông qua bash và trên Windows thông qua powershell.exe -NoProfile -ExecutionPolicy Bypass.
Biến mẫu script
Khi viết before_script / after_script, bạn có thể sử dụng các biến mẫu sau, clmBot sẽ thay thế bằng giá trị thực tế trước khi thực thi.
Biến chung:
| Biến | Mô tả |
|---|---|
{{ .ID }} | Điểm cài đặt id |
{{ .SUB_CODE }} | Số đăng ký chứng chỉ |
{{ .OS_TYPE }} | Loại hệ điều hành(windows / linux / darwin) |
{{ .IS_WINDOWS }} | Có phải Windows không(true / false) |
{{ .IS_LINUX }} | Có phải Linux (true / false) |
{{ .TIMESTAMP }} | Dấu thời gian hiện tại (giây) |
{{ .DATETIME }} | Ngày giờ hiện tại (định dạng 2006-01-02 15:04:05) |
{{ .DATE }} | Ngày hiện tại (định dạng 2006-01-02) |
{{ .LATEST }} | Chứng chỉ đã là mới nhất chưa (true / false). Khi dùng cùng --force-after, có thể dùng trong script để phán đoán bỏ qua thao tác tiếp theo |
Biến được cung cấp theo định dạng chứng chỉ:
| Định dạng | Biến | Mô tả |
|---|---|---|
| pem | {{ .PEM_CERT_PATH }} | Đường dẫn tệp chứng chỉ trang web |
| pem | {{ .PEM_CA_PATH }} | Đường dẫn tệp chuỗi CA |
| pem | {{ .PEM_KEY_PATH }} | Đường dẫn tệp khóa riêng |
| pfx | {{ .PFX_PATH }} | Đường dẫn tệp PFX |
| pfx | {{ .PFX_KEY_PASS }} | Mật khẩu khóa riêng PFX |
| jks | {{ .JKS_PATH }} | Đường dẫn tệp JKS |
| jks | {{ .JKS_ALIAS }} | Bí danh mục chứng chỉ |
| jks | {{ .JKS_KEY_PASS }} | Mật khẩu khóa riêng của mục |
| jks | {{ .JKS_STORE_PASS }} | Mật khẩu keystore |
| iis | {{ .IIS_SITE_NAME }} | Tên trang IIS |
| iis | {{ .IIS_IPADDR }} | IP liên kết HTTPS |
| iis | {{ .IIS_PORT }} | Cổng liên kết HTTPS |
| iis | {{ .IIS_DOMAIN }} | HTTPS liên kết tên miền |
| exchange | {{ .EXCHANGE_SERVICES }} | Danh sách tên dịch vụ Exchange (phân tách bằng dấu phẩy) |
Khuyến nghị bảo mật
config.yamlchứa thông tin xác thực truy cập và đường dẫn khóa riêng, vui lòng giới hạn quyền truy cập tệp ở mức chỉ tài khoản chạy mới có thể đọc/ghi (ví dụ:chmod 600 config.yaml).AccessSecretsau khi lưu sẽ được lưu trữ dưới dạng mã hóa, nhưng vẫn nên tránh sao chép tệp cấu hình đến những vị trí không đáng tin cậy.- Sử dụng tài khoản chạy chuyên dụng cho clmBot và cấp quyền theo nguyên tắc quyền hạn tối thiểu, xem Yêu cầu quyền khi chạy.