Let's Encrypt là CA miễn phí, tự động, cấp chứng chỉ loại DV (domain validation) qua giao thức ACME. Nguyên tắc: chứng minh quyền kiểm soát domain bằng máy, không cần giấy tờ.
Luồng cấp phát
1. certbot (ACME client) tạo cặp khóa và gửi yêu cầu cấp chứng chỉ cho domain tới Let's Encrypt.
2. CA trả về challenge để chứng minh quyền kiểm soát:
- HTTP-01: đặt file token tại http://<domain>/.well-known/acme-challenge/ — CA truy cập kiểm tra (cần port 80 mở).
- DNS-01: tạo bản ghi TXT _acme-challenge.<domain> — bắt buộc khi xin chứng chỉ wildcard (*.example.com).
3. Challenge hợp lệ → CA ký và cấp chứng chỉ, hiệu lực 90 ngày.
4. certbot cài chứng chỉ vào web server — plugin --nginx tự sửa server block (trỏ ssl_certificate tới fullchain.pem) và reload.
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run # test the auto-renewal pathTự động gia hạn: vì hạn chỉ 90 ngày, certbot cài sẵn systemd timer / cron chạy certbot renew hai lần mỗi ngày; lệnh chỉ gia hạn chứng chỉ sắp hết hạn (<30 ngày) rồi reload web server. Chu kỳ ngắn là chủ đích của Let's Encrypt: ép mọi người tự động hóa và thu hẹp thiệt hại nếu khóa bị lộ.
Follow-up hay gặp: vì sao cấu hình phải trỏ fullchain.pem (chứng chỉ + intermediate) thay vì mỗi cert.pem — client xác thực cần đủ chuỗi tới root CA; thiếu intermediate thì một số trình duyệt/thiết bị báo chứng chỉ không tin cậy.