Cài SSL Let’s Encrypt miễn phí với Certbot trên Nginx

Cài SSL Let\'s Encrypt miễn phí với Certbot trên Nginx

Nếu bạn đang chạy website trên VPS hoặc Dedicated Server với Nginx và chưa có SSL, trong bài này, Cloud360 sẽ hướng dẫn toàn bộ quy trình từ đầu đến cuối gồm cài Certbot, lấy chứng chỉ, cấu hình HTTPS tự động, thiết lập gia hạn và xử lý các lỗi thường gặp. Làm theo đúng thứ tự, website của bạn sẽ có HTTPS hoạt động trong khoảng 10 phút.

Cài SSL Let\'s Encrypt miễn phí với Certbot trên Nginx

Let’s Encrypt và SSL miễn phí là gì?

Let’s Encrypt là một tổ chức chứng thực số (Certificate Authority) phi lợi nhuận, cung cấp chứng chỉ SSL/TLS miễn phí, tự động và được công nhận rộng rãi. Mỗi chứng chỉ có thời hạn 90 ngày, nhưng quá trình gia hạn có thể tự động hóa hoàn toàn, giúp website của bạn luôn được bảo mật mà không cần can thiệp thủ công.

Yêu Cầu Trước Khi Bắt Đầu

Trước khi chạy bất kỳ lệnh nào, hãy đảm bảo đủ điều kiện để tránh mất thời gian debug sau.

  • Hệ điều hành: Ubuntu 20.04 / 22.04 hoặc Debian 10/11 (bài này dùng Ubuntu 22.04)
  • Nginx đã được cài và đang chạy
  • Tên miền đã trỏ A record về đúng IP của server (DNS đã propagate)
  • Cổng 80 và 443 đang mở trên firewall
  • Quyền root hoặc user có sudo

Kiểm tra Nginx đang chạy:

sudo systemctl status nginx

Kiểm tra domain đã trỏ đúng IP chưa:

dig +short yourdomain.com

Kết quả trả về phải là IP của server bạn đang dùng. Nếu DNS chưa propagate, chờ thêm trước khi tiếp tục vì Certbot sẽ không cấp chứng chỉ nếu domain không trỏ đúng.

Bước 1: Cài Đặt Certbot

Certbot được phát triển bởi Electronic Frontier Foundation (EFF) và là công cụ chính thức để tương tác với Let’s Encrypt. Cài đặt trên Ubuntu 22.04 qua snap là cách được khuyến nghị hiện tại vì luôn nhận phiên bản mới nhất.

Cài snapd và Certbot:

sudo apt update

sudo apt install snapd -y

sudo snap install --classic certbot

Tạo symlink để dùng lệnh certbot trực tiếp:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Kiểm tra Certbot đã cài thành công:

certbot --version

Kết quả trả về dạng certbot 2.x.x là thành công.

Bước 2: Mở Cổng Firewall

Certbot cần cổng 80 để xác minh domain và cổng 443 để HTTPS hoạt động. Nếu bạn đang dùng UFW, mở hai cổng này trước khi chạy Certbot.

sudo ufw allow 'Nginx Full'

sudo ufw status

Nginx Full bao gồm cả cổng 80 (HTTP) và 443 (HTTPS). Nếu trước đó bạn chỉ mở Nginx HTTP, xóa rule cũ đi:

sudo ufw delete allow 'Nginx HTTP'

Bước 3: Cấu Hình Server Block Nginx

Certbot cần đọc được tên miền trong cấu hình Nginx để tự động cấu hình HTTPS. Đảm bảo server block của bạn có đúng server_name.

Kiểm tra hoặc tạo file cấu hình cho domain:

sudo nano /etc/nginx/sites-available/yourdomain.com

Nội dung tối thiểu cần có:

server {

    listen 80;

    server_name yourdomain.com www.yourdomain.com;

 

    root /var/www/yourdomain.com/html;

    index index.html index.php;

 

    location / {

        try_files $uri $uri/ =404;

    }

}

Kích hoạt site và kiểm tra cấu hình:

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/

sudo nginx -t

sudo systemctl reload nginx

Lệnh nginx -t phải trả về syntax is oktest is successful mới tiếp tục bước tiếp theo.

Bước 4: Lấy Chứng Chỉ SSL và Cấu Hình HTTPS Tự Động

Đây là bước quan trọng nhất. Certbot plugin Nginx sẽ tự lấy chứng chỉ từ Let’s Encrypt và chỉnh sửa cấu hình Nginx để bật HTTPS.

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Certbot sẽ hỏi một số thông tin:

Enter email address (used for urgent renewal and security notices):

→ Nhập email của bạn để nhận thông báo khi chứng chỉ sắp hết hạn

(A)gree/(C)ancel:

→ Nhập A để đồng ý điều khoản dịch vụ của Let’s Encrypt

(Y)es/(N)o:

→ Chọn Y hoặc N tùy bạn có muốn nhận email từ EFF không (không ảnh hưởng đến chứng chỉ)

Nếu thành công, Certbot tự động:

  • Lấy chứng chỉ SSL từ Let’s Encrypt
  • Chỉnh sửa file cấu hình Nginx để bật HTTPS trên cổng 443
  • Thêm redirect tự động từ HTTP sang HTTPS
  • Lưu chứng chỉ vào /etc/letsencrypt/live/yourdomain.com/

Kết quả thành công trông như sau:

Successfully received certificate.

Certificate is saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem

Key is saved at:         /etc/letsencrypt/live/yourdomain.com/privkey.pem

This certificate expires on 2026-07-01.

Bước 5: Xác Nhận Cấu Hình Nginx Sau Khi Cài SSL

Sau khi Certbot chạy xong, file cấu hình Nginx được chỉnh sửa tự động. Nên xem lại để hiểu những gì đã thay đổi.

sudo cat /etc/nginx/sites-available/yourdomain.com

File sẽ trông tương tự như sau:

server {

    listen 80;

    server_name yourdomain.com www.yourdomain.com;

    return 301 https://$host$request_uri;

}

 

server {

    listen 443 ssl;

    server_name yourdomain.com www.yourdomain.com;

 

    root /var/www/yourdomain.com/html;

    index index.html index.php;

 

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;

    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

 

    location / {

        try_files $uri $uri/ =404;

    }

}

Kiểm tra và reload Nginx:

sudo nginx -t && sudo systemctl reload nginx

Bước 6: Kiểm Tra SSL Đã Hoạt Động

Sau khi cài xong, kiểm tra SSL đang hoạt động đúng trước khi kết thúc.

Kiểm tra trên trình duyệt: Truy cập https://yourdomain.com, biểu tượng ổ khóa xuất hiện trên thanh địa chỉ là thành công. Thử truy cập http://yourdomain.com để kiểm tra redirect về HTTPS có hoạt động không.

Kiểm tra bằng curl:

curl -I http://yourdomain.com

Kết quả phải trả về 301 Moved Permanently với header Location: https://yourdomain.com.

Kiểm tra điểm bảo mật với SSL Labs: Vào https://www.ssllabs.com/ssltest/, nhập tên miền và chạy test. Cấu hình Let’s Encrypt với Certbot trên Nginx thường đạt điểm A hoặc A+ ngay từ đầu nhờ file options-ssl-nginx.conf của Certbot đã cấu hình TLS 1.2/1.3 và cipher suite an toàn.

Bước 7: Cấu Hình Tự Động Gia Hạn SSL

Chứng chỉ Let’s Encrypt có hiệu lực 90 ngày. Certbot tự động cài một systemd timer để gia hạn trước khi hết hạn, không cần bạn làm gì.

Kiểm tra timer đã được cài chưa:

sudo systemctl status snap.certbot.renew.timer

Kiểm tra thử quy trình gia hạn có hoạt động không:

sudo certbot renew --dry-run

Lệnh --dry-run giả lập quá trình gia hạn mà không thực sự lấy chứng chỉ mới. Kết quả trả về Congratulations, all simulated renewals succeeded là hoàn tất.

Certbot sẽ tự gia hạn khi chứng chỉ còn dưới 30 ngày, chạy hai lần mỗi ngày vào giờ ngẫu nhiên để phân tán tải cho server Let’s Encrypt.

Xử lý lỗi thường gặp

Dưới đây là các lỗi phổ biến nhất khi cài SSL với Certbot và cách xử lý nhanh.

Xử lý lỗi thường gặp

Lỗi: Could not bind to IPv4/IPv6

Certbot cần dùng cổng 80 để xác minh domain nhưng Nginx đang chiếm cổng này. Giải pháp là dùng plugin Nginx thay vì standalone:

sudo certbot --nginx -d yourdomain.com

Plugin Nginx không cần tắt Nginx, xử lý trực tiếp qua cấu hình.

Lỗi: DNS problem: NXDOMAIN looking up A for yourdomain.com

Domain chưa trỏ về IP của server hoặc DNS chưa propagate. Kiểm tra lại A record và chờ thêm 15-30 phút rồi chạy lại.

Lỗi: too many certificates already issued for yourdomain.com

Let’s Encrypt giới hạn 5 chứng chỉ cho cùng một domain trong 7 ngày. Nếu bạn đã chạy lệnh certbot nhiều lần do lỗi, dùng flag –staging để test trước:

sudo certbot --nginx --staging -d yourdomain.com

Lỗi Mixed Content sau khi cài SSL

Website đã có HTTPS nhưng một số tài nguyên (ảnh, CSS, JS) vẫn load qua HTTP. Nếu dùng WordPress, cài plugin Really Simple SSL để tự động fix, hoặc thêm vào cấu hình Nginx:

add_header Content-Security-Policy "upgrade-insecure-requests";

Chứng chỉ không tự gia hạn được

Kiểm tra log gia hạn:

sudo journalctl -u snap.certbot.renew.service

Nguyên nhân thường gặp là cổng 80 bị chặn bởi firewall vào thời điểm gia hạn, hoặc cấu hình Nginx có lỗi. Sửa lỗi và chạy certbot renew --dry-run lại để xác nhận.

Tối ưu thêm sau khi cài ssl

Sau khi SSL hoạt động, có thể thêm một số cấu hình để tăng điểm bảo mật.

Bật HSTS (HTTP Strict Transport Security)

HSTS yêu cầu trình duyệt luôn dùng HTTPS khi truy cập domain, ngăn tấn công SSL stripping. Thêm vào server block HTTPS trong Nginx:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Bật OCSP Stapling

Giúp trình duyệt xác minh tính hợp lệ của chứng chỉ nhanh hơn mà không cần kết nối đến CA:

ssl_stapling on;

ssl_stapling_verify on;

resolver 8.8.8.8 8.8.4.4 valid=300s;

resolver_timeout 5s;

Sau khi thêm, reload Nginx và kiểm tra lại điểm trên SSL Labs để xác nhận đã đạt A+.

Vậy là trên đây Cloud360 đã hướng xong cách cài SSL Let’s Encrypt miễn phí với Certbot trên Nginx. Chúc bạn thành công!

Nguyen Ngoc Thu

CEO tại Cloud360
Theo dõi:
Nguyễn Ngọc Thư là Giám đốc Công ty 360, đơn vị chủ quản thương hiệu HostingViet. Dưới sự điều hành của ông, HostingViet phát triển mạnh mẽ, cung cấp các giải pháp Cloud VPS, Hosting chất lượng và tên miền.

Bài viết liên quan

KVM VPS là gì? Cách hoạt động, ưu nhược điểm và cách chọn phù hợp

KVM VPS là gì? Cách hoạt động, ưu nhược điểm và cách chọn phù hợp

VPS KVM là một loại máy chủ ảo sử dụng công nghệ ảo hóa KVM, có tài nguyên và hệ điều hành riêng.

Nguyễn Ngọc ThưTháng 9 8, 2026
Hệ điều hành Linux là gì? Ưu nhược điểm và các phiên bản phổ biến

Hệ điều hành Linux là gì? Ưu nhược điểm và các phiên bản phổ biến

Linux là hệ điều hành mã nguồn mở, miễn phí, ổn định và bảo mật cao. Nó không phải một phần mềm duy nhất mà là nền tảng cho hàng trăm hệ điều hành khác nhau

Nguyễn Ngọc ThưTháng 9 8, 2026
Cách trỏ domain về VPS chi tiết từ A-Z, đơn giản dễ làm

Cách trỏ domain về VPS chi tiết từ A-Z, đơn giản dễ làm

Cách trỏ domain về VPS là một trong những thao tác quan trọng đầu tiên khi bạn triển khai website trên máy chủ ảo. Sau khi đăng ký tên miền và khởi tạo VPS, hai thành phần này vẫn chưa tự động kết nối với nhau. Bạn cần cấu hình DNS để tên miền phân giải về đúng [...]

Nguyễn Ngọc ThưTháng 9 8, 2026
VPS treo game là gì? Thuê VPS treo game ổn định, cấu hình phù hợp

VPS treo game là gì? Thuê VPS treo game ổn định, cấu hình phù hợp

Với những trò chơi trực tuyến có cơ chế AFK, duy trì nhân vật online hoặc cần chạy client trong thời gian dài, việc để máy tính cá nhân hoạt động liên tục 24/7 có thể gây bất tiện, tiêu thụ điện năng và chiếm dụng thiết bị cho những công việc khác. Đây là [...]

Nguyễn Ngọc ThưTháng 9 4, 2026
Top 10+ dịch vụ Server Free dành cho học sinh, sinh viên năm 2026

Top 10+ dịch vụ Server Free dành cho học sinh, sinh viên năm 2026

Trong quá trình học quản trị hệ thống, phát triển website, kiểm thử ứng dụng hoặc xây dựng Proof of Concept, nhu cầu tìm kiếm server free ngày càng phổ biến. Thay vì phải thanh toán ngay cho một máy chủ dài hạn, người dùng có thể tận dụng các chương trình Cloud Server Free, VPS free trial, Free [...]

Nguyễn Ngọc ThưTháng 9 4, 2026
Cloud Gaming là gì? Top 8+ nhà cung cấp dịch vụ Cloud Gaming nổi tiếng

Cloud Gaming là gì? Top 8+ nhà cung cấp dịch vụ Cloud Gaming nổi tiếng

Cloud Gaming là mô hình chơi game thông qua hạ tầng điện toán đám mây, trong đó phần lớn công việc xử lý đồ họa, CPU và vận hành trò chơi được thực hiện trên máy chủ từ xa thay vì trực tiếp trên máy tính, điện thoại hoặc TV của người chơi. Thiết bị đầu [...]

Nguyễn Ngọc ThưTháng 9 4, 2026
VPS Storage là gì? Tìm hiểu giải pháp lưu trữ dữ liệu dung lượng lớn

VPS Storage là gì? Tìm hiểu giải pháp lưu trữ dữ liệu dung lượng lớn

Trong kỷ nguyên số hóa phát triển bùng nổ như hiện nay, khi khối lượng thông tin và tài sản số mà các doanh nghiệp cũng như cá nhân tạo ra đang tăng trưởng theo cấp số nhân mỗi ngày, việc tìm kiếm một không gian an toàn, ổn định để bảo lưu dữ liệu [...]

Nguyễn Ngọc ThưTháng 9 3, 2026
Top 10+ nhà cung cấp VPS Linux Free Chất Lượng Cho Người Mới

Top 10+ nhà cung cấp VPS Linux Free Chất Lượng Cho Người Mới

VPS Linux free là lựa chọn được nhiều lập trình viên, sinh viên, quản trị viên hệ thống và doanh nghiệp quan tâm khi cần một môi trường Linux để học tập, chạy thử website, phát triển ứng dụng hoặc kiểm tra cấu hình server mà chưa muốn đầu tư ngay cho hạ tầng trả phí. [...]

Nguyễn Ngọc ThưTháng 8 29, 2026
Top 8+ nhà cung cấp VPS Free không cần Visa cập nhật mới nhất

Top 8+ nhà cung cấp VPS Free không cần Visa cập nhật mới nhất

VPS free không cần VISA là lựa chọn được nhiều sinh viên, lập trình viên, quản trị viên hệ thống và người mới học server tìm kiếm khi muốn trải nghiệm một máy chủ ảo mà chưa cần nhập thông tin thẻ Visa hoặc Mastercard. Về bản chất, đây có thể là một VPS được miễn [...]

Nguyễn Ngọc ThưTháng 8 29, 2026
Contabo VPS Là Gì? Có Tốt Không? Đánh Giá VPS Contabo Chi Tiết

Contabo VPS Là Gì? Có Tốt Không? Đánh Giá VPS Contabo Chi Tiết

Contabo VPS thường thu hút sự chú ý ngay từ bảng cấu hình: lượng RAM lớn, nhiều vCPU, dung lượng lưu trữ cao nhưng mức giá thấp hơn đáng kể so với nhiều nhà cung cấp cloud quốc tế. Đây cũng là lý do người dùng thường đặt câu hỏi liệu VPS Contabo có thực sự tốt, hiệu [...]

Nguyễn Ngọc ThưTháng 8 28, 2026