1. Vì sao SSL là yêu cầu bắt buộc, không còn là tùy chọn?
Hiện nay, một Web Server không có HTTPS sẽ gặp đồng thời nhiều vấn đề:
Trình duyệt cảnh báo “Not Secure”
Dữ liệu truyền đi không được mã hóa
Không đáp ứng yêu cầu bảo mật cơ bản
Nhiều dịch vụ bên thứ ba từ chối tích hợp
Với môi trường production:
SSL không phải để “cho đẹp”, mà là điều kiện tối thiểu để hệ thống được chấp nhận.
Let’s Encrypt giúp giải quyết vấn đề này bằng:
Chứng chỉ SSL miễn phí
Được các trình duyệt tin cậy
Có thể tự động gia hạn
2. Điều kiện bắt buộc trước khi cài SSL
Trước khi chạy Certbot, bắt buộc phải đảm bảo:
Domain đã trỏ DNS đúng về IP server
Website truy cập được qua HTTP (port 80)
Nginx đang chạy ổn định
Firewall đã mở port 80 và 443
Virtual host đã cấu hình đúng
server_name
Nếu bỏ qua các điều kiện này:
Certbot gần như chắc chắn sẽ thất bại.
3. Giới thiệu Certbot và cách hoạt động
Certbot là công cụ chính thức để:
Giao tiếp với Let’s Encrypt
Xác thực quyền sở hữu domain
Cấp và cài chứng chỉ SSL
Cách xác thực phổ biến nhất:
HTTP-01 challenge
Let’s Encrypt sẽ truy cập vào website qua HTTP
Nếu xác thực thành công → cấp SSL
Điều này giải thích vì sao:
HTTP phải hoạt động trước khi có HTTPS.
4. Cài đặt Certbot trên Ubuntu Server
4.1. Cài Certbot và plugin cho Nginx
Kiểm tra phiên bản:
5. Cấp chứng chỉ SSL cho website
5.1. Cấp SSL tự động cho Nginx (khuyến nghị)
Ví dụ với domain cntt.it:
Certbot sẽ:
Kiểm tra cấu hình Nginx
Xác thực domain
Cấp chứng chỉ
Tự động chỉnh cấu hình Nginx
Lệnh này sẽ được sử dụng trong thực tế nhiều hơn: khi bạn muốn chủ động cấu hình nginx conf, không cho phép cerbot tự động thay đổi cấu hình. Lệnh dưới đây chỉ cấp chứng nhận ssl. Lưu chứng nhận vào thư mục mặc định.
certbot certonly --nginx \ --cert-name cntt.it \-d cntt.it;
5.2. Các lựa chọn quan trọng khi chạy Certbot
Trong quá trình chạy, Certbot sẽ hỏi:
Email liên hệ → nhập email thật
Đồng ý điều khoản → Yes
Redirect HTTP → HTTPS
→ Nên chọn redirect toàn bộ
Nguyên tắc:
Production chỉ nên phục vụ HTTPS.
6. Cấu hình Nginx sau khi cài SSL
Sau khi Certbot chạy xong:
Nginx sẽ có thêm server block HTTPS
HTTP sẽ redirect sang HTTPS (nếu chọn)
Kiểm tra cấu hình:
7. Kiểm tra chứng chỉ SSL
7.1. Kiểm tra từ trình duyệt
Truy cập:
Kiểm tra:
Không còn cảnh báo bảo mật
Chứng chỉ hợp lệ
7.2. Kiểm tra từ dòng lệnh
Thông tin cần chú ý:
Domain
Ngày hết hạn
Đường dẫn file chứng chỉ
8. Gia hạn SSL tự động – bước cực kỳ quan trọng
8.1. Vì sao phải kiểm tra auto-renew?
Chứng chỉ Let’s Encrypt:
Chỉ có hiệu lực 90 ngày
Nếu không gia hạn → HTTPS sẽ lỗi
Ubuntu mặc định đã có cron/systemd timer cho Certbot.
Kiểm tra:
8.2. Test gia hạn thủ công (khuyến nghị)
Nếu test thành công:
Gia hạn tự động sẽ hoạt động bình thường.
9. Quản lý SSL cho nhiều website
Nguyên tắc:
Mỗi website có SSL riêng
Có thể gộp nhiều domain trong một chứng chỉ nếu cần
Không dùng chung chứng chỉ cho các site không liên quan
Ví dụ:
10. Những lỗi SSL thường gặp và nguyên nhân
10.1. Certbot không cấp được SSL
Nguyên nhân thường gặp:
DNS chưa propagate
Domain trỏ sai IP
Firewall chặn port 80
server_name không khớp domain
10.2. Website vào được HTTP nhưng không vào được HTTPS
Nguyên nhân:
Firewall chưa mở port 443
Nginx chưa reload
Cấu hình SSL lỗi
11. Những điều KHÔNG nên làm với SSL
Không copy chứng chỉ giữa server
Không chỉnh tay file SSL nếu không hiểu
Không tắt auto-renew
Không dùng Let’s Encrypt cho domain nội bộ không public
Nguyên tắc:
SSL càng tự động hóa, hệ thống càng an toàn.
12. Checklist SSL cho Web Server production
Domain trỏ đúng IP
HTTP hoạt động ổn định
Certbot cài đúng
HTTPS truy cập được
Redirect HTTP → HTTPS
Auto-renew hoạt động
13. Bài tiếp theo
Trong Bài 21, chúng ta sẽ tiếp tục hoàn thiện lớp HTTPS:
Gia hạn SSL tự động và kiểm tra định kỳ
Bài này sẽ giúp:
Tránh “sập HTTPS” do quên gia hạn
Đảm bảo hệ thống chạy bền nhiều năm
- Đăng nhập để gửi ý kiến