Skip to content
VDS · Website và máy chủ web

Chứng chỉ Let's Encrypt miễn phí

Cách cấp và tự động gia hạn chứng chỉ HTTPS trên VPS với certbot, kể cả trường hợp cổng 80 đã được sử dụng.

Cập nhật 23 tháng 8, 2026

Bạn cần chứng chỉ để trình duyệt không hiện “Không bảo mật” và để biểu mẫu cũng như thanh toán hoạt động được. Let's Encrypt cấp chứng chỉ miễn phí trong 90 ngày kèm gia hạn tự động.

Chuẩn bị

Kiểm tra ba điều, nếu không việc cấp chứng chỉ sẽ thất bại:

dig +short example.ru        # should return your machine's address
ss -tulpn | grep -E ':80|:443'
  • bản ghi A của tên miền trỏ đến địa chỉ trong tab “Tổng quan” của bảng điều khiển tại /hosting/vds/m/<id>;
  • cổng 80 truy cập được từ bên ngoài — Let's Encrypt dùng cổng này để xác minh quyền sở hữu tên miền;
  • máy chủ web đang chạy: Nginx hoặc Apache.

Nếu bạn dùng Caddy, bạn không cần làm gì cả — nó tự cấp chứng chỉ.

Cấp chứng chỉ

apt install -y certbot python3-certbot-nginx      # Debian, Ubuntu
dnf install -y certbot python3-certbot-nginx      # AlmaLinux, CentOS Stream

certbot --nginx -d example.ru -d www.example.ru

Với Apache, đường dẫn tương tự với python3-certbot-apache và cờ --apache. Certbot tự thêm khối chứng chỉ và chuyển hướng HTTP sang HTTPS vào cấu hình.

Kiểm tra kết quả:

certbot certificates
curl -I https://example.ru

Gia hạn tự động

Gói cài đặt sẽ tạo một system timer, bộ này cũng xử lý việc gia hạn. Hãy đảm bảo timer đang hoạt động và chạy thử gia hạn:

systemctl list-timers | grep certbot
certbot renew --dry-run

Chạy thử là bắt buộc. Nó phát hiện tình huống việc gia hạn sẽ hỏng sau hai tháng nữa — ví dụ bạn đổi tên tệp cấu hình site và certbot không còn biết đặt tệp xác minh ở đâu.

Khi cổng 80 đã bị chiếm

Nếu một ứng dụng đang chạy trên cổng 80 và bạn không thể đặt máy chủ web ở đó, hãy dùng chế độ riêng:

certbot certonly --standalone --preferred-challenges http -d example.ru

Certbot sẽ tự dựng một máy chủ tạm thời trong suốt quá trình kiểm tra. Để làm vậy, bạn sẽ phải dừng ứng dụng: --pre-hook và --post-hook có thể làm việc đó tự động.

Sau khi cấp, chứng chỉ nằm trong /etc/letsencrypt/live/example.ru/: fullchain.pem và privkey.pem.

Lỗi thường gặp

Triệu chứngNguyên nhân
Timeout during connectCổng 80 bị tường lửa chặn, hoặc tên miền trỏ đến máy khác
too many certificates already issuedBạn đã chạm giới hạn hàng tuần cho tên miền — hãy chờ hoặc gỡ lỗi bằng --staging
Site vẫn phục vụ chứng chỉ cũ sau khi cấpBạn chưa tải lại máy chủ web: systemctl reload nginx
Chứng chỉ đã hết hạnTimer bị tắt — kiểm tra systemctl enable --now certbot.timer

Thư mục /etc/letsencrypt là một phần dữ liệu của bạn. Máy không được sao lưu tự động, nên hãy đưa nó vào bản sao lưu cùng với các tệp cấu hình máy chủ web.