# Lệnh `muassl` 2.0 — tự cấp lại và cài chứng chỉ SSL trên máy chủ Linux `muassl` chạy ngay trên máy chủ của bạn: - tự nhận diện loại máy chủ và **chỉ dùng lệnh/API chính thức** của loại đó để đọc và cài chứng chỉ; - tự tìm các site trên máy mà chứng chỉ của đơn hàng phủ được (đối chiếu SAN thật của chứng chỉ); - khi chứng chỉ sắp hết hạn mà đơn còn kỳ hạn: **tự gửi cấp lại**, xác thực, tải về, cài, kiểm tra lại; - cài xong mà site không phục vụ chứng chỉ mới thì **tự hoàn tác**; - báo qua **Telegram**; tuỳ chọn **tự cập nhật** lệnh `muassl` khi có bản mới. > **An toàn:** không có lệnh xoá. Trước khi cài, trạng thái cũ của từng site được lưu vào > `/usr/local/muassl/sao-luu/-/`. Mọi thao tác ghi vào `/var/log/muassl-ssl.log`. ## Hỗ trợ và cách làm với từng loại | Loại máy chủ | Đọc site / chứng chỉ | Cài chứng chỉ | Hoàn tác | |---|---|---|---| | **Plesk** | `plesk bin site --list`, `site --info` | `plesk bin certificate --create` + `site --update -certificate-name` | gán lại tên chứng chỉ cũ (vẫn nằm trong kho Plesk) | | **cPanel/WHM** | WHM API `get_domain_info`, `fetch_vhost_ssl_components` | WHM API `installssl` (token tạm, tự thu hồi) | `installssl` lại bộ cũ | | **DirectAdmin** | `directadmin api-url`, `CMD_API_DOMAIN_OWNERS`, `CMD_API_SUBDOMAINS` | `CMD_API_SSL` (paste + cacert) | `CMD_API_SSL` lại bộ cũ | | **Nginx** | `nginx -T` (cấu hình đang hiệu lực) | ghi tệp `ssl_certificate` (fullchain) + khoá, `nginx -t`, reload | trả lại tệp cũ, reload | | **Apache / LiteSpeed** | `httpd -t -D DUMP_VHOSTS` (hoặc `apache2ctl`) | ghi tệp `SSLCertificate*`, `configtest`, `graceful` | trả lại tệp cũ, graceful | | **Zimbra** | `zmhostname`, `zmprov` | `zmcertmgr verifycrt` → `deploycrt`, `zmcontrol restart` | `deploycrt` lại bộ cũ | Máy có nhiều web server: ép loại trong **Tuỳ chọn → Loại máy chủ**. Khoá riêng và mật khẩu API không bao giờ xuất hiện trên dòng lệnh (không lộ qua `ps`). ## Cài đặt Chạy bằng `root`: ```bash curl -fsSL https://muassl.com/api/automation/cli | bash -s -- --apikey= # thấy mọi đơn của tài khoản curl -fsSL https://muassl.com/api/automation/cli | bash -s -- --pin= # chỉ đơn đó curl -fsSL https://muassl.com/api/automation/cli | bash # nhập sau ``` Máy cũ không xác minh được chứng chỉ của muassl.com thì dùng `curl -fsSLk`. Bộ cài vẫn đối chiếu SHA-256 của từng tệp, lệch một tệp là dừng và không thay đổi gì. Yêu cầu: `curl`, `openssl`, `python3` (hoặc `python2`), `crontab`, `sha256sum`. ## Dùng ```bash muassl # menu ``` ``` === MuaSSL - sg171.example.com | Plesk Obsidian 18.0.65.2 === Tai khoan: API key ****ab12 | 0 ma PIN Tu dong: BAT luc 04:17 Ban: 2.0.0 1) M04258725 *.example.com 6 site con 198 ngay [so] mo don t) them don c) chay tat ca ngay s) site tren may m) dat mua k) kich hoat o) tuy chon & tu dong n) nhat ky u) cap nhat g) go bo x) thoat ``` - **`t` Thêm đơn:** liệt kê các đơn của tài khoản kèm các site trên máy mà chứng chỉ phủ được → chọn số. Phương thức xác thực khi cấp lại lấy theo đơn trên MuaSSL; nếu site chưa dùng bản mới nhất sẽ hỏi cài luôn. - **Gõ số đơn** để mở: kiểm tra, cài bản mới nhất, gửi cấp lại ngay, đổi phương thức xác thực (HTTP / DNS / Email), chọn lại site, hoàn tác về lần cài trước, xem nhật ký, ngừng quản lý. - **`o` Tuỳ chọn:** bật/tắt tự động hằng ngày, giờ chạy, **tự cập nhật lệnh muassl**, tự gửi cấp lại, tự cài, ngưỡng ngày, Telegram, loại máy chủ, tài khoản. Lệnh nhanh: ```bash muassl them | site | chaytatca | tuychon | capnhat [--ep] | phienban | nhatky | gobo muassl cron bat | cron tat muassl datmua | kichhoat # cần API key muassl apikey | pin # dán cả link ?pin=... cũng được muassl quocte # thử truy cập từ Mỹ/Đức/Singapore/Nhật (xác thực HTTP) muassl [kiemtra|caidat|caplai|xacthuc|site|hoantac|nhatky|ngung] ``` ## Tự động hằng ngày Cron chạy `/usr/local/muassl/muassl-cron.sh` mỗi ngày. Với từng đơn: 1. **Kiểm tra** máy chủ, các site, API MuaSSL. 2. **Cấp lại** khi chứng chỉ còn ít hơn ngưỡng (DV 20 ngày, OV/EV 30 ngày) mà đơn còn kỳ hạn dài hơn. Xác thực DNS giữ nguyên CSR cũ nên bản ghi CNAME đã tạo dùng được mãi. 3. **Xác thực & chờ ban hành**: HTTP tự đặt tệp (có thử truy cập từ nước ngoài trước), DNS kiểm tra CNAME, Email chờ người nhận bấm xác nhận (lần chạy sau tự tiếp tục). 4. **Tải về & cài**: khoá phải khớp chứng chỉ, chuỗi CA được xếp đúng thứ tự, chứng chỉ phải phủ mọi site. 5. **Kiểm tra lại** qua cổng 443 của từng site; không khớp thì hoàn tác. **Tự cập nhật** (tắt sẵn, bật ở Tuỳ chọn mục 3): trước khi chạy các đơn, cron đọc `version.txt`; có bản mới thì tải bộ cài qua HTTPS **có xác minh chứng chỉ** (không bao giờ dùng `-k`), đối chiếu SHA-256 từng tệp, cài rồi chạy tiếp bằng bản mới. Lỗi thì giữ nguyên bản cũ. ## Tệp trên máy | Đường dẫn | Nội dung | |---|---| | `/usr/local/bin/muassl` | lệnh chính (liên kết tới `muassl-cli.sh`) | | `/usr/local/muassl/muassl-caidat.sh` | bộ cài cho một đơn (4 bước) | | `/usr/local/muassl/lib/chung.sh` | thư viện dùng chung | | `/usr/local/muassl/mod/.sh` | mô-đun theo loại máy chủ | | `/usr/local/muassl/chung.conf` | API key, mã PIN, tuỳ chọn (quyền 600) | | `/usr/local/muassl/don.d/.conf` | mỗi đơn: `ORDER`, `SITES`, `DCV`, `APPROVER_EMAIL`… | | `/usr/local/muassl/sao-luu/` | trạng thái cũ trước mỗi lần cài | | `/var/log/muassl-ssl.log` | nhật ký | Cấu hình đơn của bản 1.x (`DOMAIN` + `DICH_THEM`) vẫn đọc được; mở đơn → **Chọn lại site** để lưu theo mẫu mới. ## Gỡ bỏ `muassl gobo` tắt lịch tự động và đổi tên `/usr/local/muassl` thành `/usr/local/muassl.go-bo-` (giữ cấu hình và bản sao lưu). Chứng chỉ đang cài trên site không bị động tới.