Giới thiệu về Let’s Encrypt
Let’s Encrypt là một cơ quan cấp chứng chỉ (Certificate Authority – CA) tự động, mở và miễn phí do Internet Security Research Group (ISRG) vận hành. Chứng chỉ Let’s Encrypt hiện có thời hạn mặc định 90 ngày, vì vậy máy chủ cần được cấu hình tự động gia hạn thay vì chờ đến khi chứng chỉ hết hạn (theo letsencrypt.org).
Bài viết này hướng dẫn cài chứng chỉ TLS/SSL Let’s Encrypt trên máy chủ Ubuntu chạy OpenLiteSpeed bằng Certbot. Bạn sẽ lấy chứng chỉ bằng phương thức webroot, cấu hình OpenLiteSpeed sử dụng các tệp chứng chỉ, thiết lập chuyển hướng HTTP sang HTTPS và kiểm tra tự động gia hạn.
Yêu cầu tiên quyết
- Một máy chủ Ubuntu được hỗ trợ và tài khoản có quyền
sudo. - OpenLiteSpeed đã được cài đặt và đang phục vụ website.
- Tên miền và các tên miền phụ cần cấp chứng chỉ, chẳng hạn
example.comvàwww.example.com, đã trỏ về đúng địa chỉ IP máy chủ. - Cổng TCP 80 và 443 được mở trong tường lửa hoặc nhóm bảo mật của nhà cung cấp VPS. Let’s Encrypt cần truy cập được máy chủ để xác thực quyền kiểm soát tên miền.
- Biết chính xác thư mục gốc (document root) của website, ví dụ
/var/www/html/example.com.
OpenLiteSpeed hiện cũng có cơ chế ACME tích hợp để tự cấp và gia hạn chứng chỉ. Tuy nhiên, nếu bạn đang quản lý chứng chỉ bằng Certbot hoặc muốn giữ quy trình hiện tại, Certbot vẫn có thể được sử dụng độc lập (theo tài liệu OpenLiteSpeed về ACME).
Cài đặt Certbot trên Ubuntu
Phương thức cài đặt được Certbot khuyến nghị là Snap. Nếu máy chủ đã cài Certbot từ apt hoặc bản certbot-auto, hãy gỡ bản cũ để tránh gọi nhầm chương trình khi thực hiện gia hạn (theo hướng dẫn cài đặt Certbot).
sudo apt-get remove certbot
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
Nếu máy chủ chưa có snapd, hãy cài và kích hoạt Snap theo hướng dẫn dành cho phiên bản Ubuntu đang sử dụng trước khi chạy các lệnh trên.
Lấy chứng chỉ bằng phương thức webroot
Với OpenLiteSpeed đang chạy trên cổng 80, phương thức webroot thường phù hợp hơn standalone vì không cần dừng máy chủ web. Certbot sẽ tạo tệp xác thực trong thư mục .well-known/acme-challenge; Let’s Encrypt sẽ truy cập tệp này qua HTTP để xác minh tên miền.
sudo certbot certonly --webroot
-w /var/www/html/example.com
-d example.com
-d www.example.com
Thay example.com và đường dẫn -w bằng thông tin thực tế của bạn. Nếu website có nhiều tên miền nhưng dùng các document root khác nhau, hãy khai báo tùy chọn -w tương ứng trước từng nhóm tên miền.
Không chặn hoặc chuyển hướng sai đường dẫn
Lưu ý quan trọng/.well-known/acme-challenge/. Hãy kiểm tra quyền đọc của thư mục document root và bảo đảm OpenLiteSpeed có thể phục vụ các tệp bên trong thư mục này qua cổng 80.
Nếu cổng 80 không thể phục vụ website, bạn có thể dùng phương thức standalone, nhưng phải dừng OpenLiteSpeed trước để Certbot tạm thời sử dụng cổng này:
sudo systemctl stop lsws
sudo certbot certonly --standalone -d example.com -d www.example.com
sudo systemctl start lsws
Cấu hình chứng chỉ trên OpenLiteSpeed
Sau khi cấp thành công, Certbot thường lưu chứng chỉ tại thư mục /etc/letsencrypt/live/example.com/. Trong WebAdmin Console của OpenLiteSpeed, vào Listeners > HTTPS > SSL hoặc phần SSL của virtual host rồi đặt:
- Private Key File:
/etc/letsencrypt/live/example.com/privkey.pem - Certificate File:
/etc/letsencrypt/live/example.com/fullchain.pem - Chained Certificate:
Yes
Hãy bảo đảm HTTPS listener lắng nghe cổng 443 và virtual host đã được ánh xạ với đúng tên miền. OpenLiteSpeed hỗ trợ cấu hình chứng chỉ ở cấp listener hoặc virtual host; cấu hình ở cấp virtual host sẽ được ưu tiên hơn (theo tài liệu SSL của OpenLiteSpeed).
Lưu cấu hình, sau đó khởi động lại OpenLiteSpeed:
sudo systemctl restart lsws
Chuyển hướng HTTP sang HTTPS
Lệnh certbot certonly chỉ lấy chứng chỉ, không tự sửa cấu hình OpenLiteSpeed và cũng không tự bật chuyển hướng HTTP sang HTTPS. Bạn cần cấu hình chuyển hướng tại virtual host hoặc tệp rewrite mà OpenLiteSpeed đang nạp.
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
Nếu muốn giữ nguyên tên miền mà người dùng đã truy cập, có thể dùng biến máy chủ phù hợp trong cấu hình của bạn thay vì cố định example.com. Sau khi thay đổi rewrite rule, hãy khởi động lại hoặc graceful restart OpenLiteSpeed để áp dụng cấu hình (theo tài liệu rewrite rule của OpenLiteSpeed).
Kiểm tra tự động gia hạn Let’s Encrypt
Certbot cài bằng Snap đi kèm cơ chế tự động kiểm tra và gia hạn chứng chỉ. Lệnh renew sẽ xử lý các chứng chỉ sắp hết hạn và có thể chạy định kỳ mà không cần ép gia hạn mỗi lần.
sudo certbot renew --dry-run
Nếu lệnh kiểm thử thành công, hãy kiểm tra bộ hẹn giờ của Certbot:
systemctl list-timers --all | grep -i certbot
sudo snap services certbot
Certbot thường sử dụng systemd timer hoặc cơ chế lịch tương ứng của gói cài đặt. Không nên chỉnh sửa trực tiếp tệp trong /etc/letsencrypt/renewal/ nếu chưa sao lưu và kiểm tra bằng --dry-run.
Nạp lại OpenLiteSpeed sau khi gia hạn
OpenLiteSpeed trỏ tới các đường dẫn cố định trong thư mục /etc/letsencrypt/live/. Sau khi Certbot cấp chứng chỉ mới, máy chủ thường cần được nạp lại để sử dụng chứng chỉ mới. Bạn có thể tạo deploy hook, chỉ chạy sau khi gia hạn thành công:
sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-openlitespeed.sh > /dev/null <<'EOF'
#!/bin/sh
systemctl reload lsws
EOF
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-openlitespeed.sh
Nếu hệ thống không hỗ trợ reload cho dịch vụ của bạn, dùng lệnh khởi động lại được tài liệu OpenLiteSpeed cung cấp:
sudo systemctl restart lsws
Deploy hook chỉ được thực thi sau khi chứng chỉ thực sự được gia hạn. Bạn có thể kiểm tra hook bằng certbot renew --dry-run; khi cần kiểm tra riêng hook trong bản Certbot hỗ trợ tùy chọn này, dùng thêm --run-deploy-hooks (theo tài liệu sử dụng Certbot).
Xác nhận HTTPS hoạt động
Kiểm tra website bằng trình duyệt tại https://example.com/. Bạn cũng nên xác minh cả tên miền phụ, trạng thái chuyển hướng và ngày hết hạn chứng chỉ:
curl -I http://example.com
curl -I https://example.com
sudo certbot certificates
Kết quả mong muốn là yêu cầu HTTP được chuyển hướng sang HTTPS, còn yêu cầu HTTPS trả về phản hồi bình thường với chứng chỉ đúng tên miền. Nếu trình duyệt cảnh báo chứng chỉ, hãy kiểm tra lại đường dẫn fullchain.pem, privkey.pem, ánh xạ virtual host và thời điểm nạp lại OpenLiteSpeed.
Bạn đã hoàn tất việc cài đặt chứng chỉ Let’s Encrypt trên Ubuntu với OpenLiteSpeed và thiết lập quy trình gia hạn tự động.
Đọc thêm: Tối ưu hóa bảo mật và hiệu quả với Ubuntu Server: Hướng dẫn cài đặt

