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 ok và test 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

Server là gì? Phân loại, cấu tạo, cách hoạt động và vai trò của máy chủ

Server là gì? Phân loại, cấu tạo, cách hoạt động và vai trò của máy chủ

Server, hay máy chủ, là hệ thống phần cứng, phần mềm hoặc máy ảo có nhiệm vụ cung cấp dữ liệu, tài nguyên và dịch vụ cho các thiết bị hoặc chương trình khác thông qua mạng. Những thiết bị gửi yêu cầu đến server được gọi là client. Trong thực tế, server có thể phục [...]

Ngô TúTháng 9 23, 2026
VMware ESXi là gì? Tổng quan kiến trúc, tính năng và cách triển khai

VMware ESXi là gì? Tổng quan kiến trúc, tính năng và cách triển khai

VMware ESXi là một hypervisor loại 1, còn gọi là bare-metal hypervisor, được cài đặt trực tiếp lên phần cứng máy chủ vật lý thay vì chạy trên một hệ điều hành nền như Windows hoặc Linux. ESXi đảm nhiệm việc quản lý CPU, RAM, thiết bị lưu trữ và network của máy chủ, sau đó phân chia [...]

Ngô TúTháng 9 23, 2026
Load Balancing là gì? Cơ chế cân bằng tải, thuật toán và cách triển khai

Load Balancing là gì? Cơ chế cân bằng tải, thuật toán và cách triển khai

Load balancing hay cân bằng tải là phương pháp phân phối lưu lượng truy cập, kết nối mạng hoặc các yêu cầu ứng dụng đến nhiều máy chủ khác nhau trong cùng một hệ thống. Thay vì để toàn bộ request tập trung vào một server duy nhất, load balancer đứng ở phía trước cụm máy chủ backend và quyết [...]

Ngô TúTháng 9 23, 2026
Reseller Hosting là gì? Cách hoạt động, ưu nhược điểm và bảng giá

Reseller Hosting là gì? Cách hoạt động, ưu nhược điểm và bảng giá

Reseller Hosting, còn gọi là Hosting Đại lý, là mô hình dịch vụ cho phép cá nhân hoặc doanh nghiệp thuê một gói tài nguyên lưu trữ có quyền quản trị cao hơn hosting thông thường, sau đó chia tài nguyên thành nhiều tài khoản hosting nhỏ để cung cấp lại cho khách hàng. Thay vì [...]

Ngô TúTháng 9 23, 2026
VPS là gì? Cách hoạt động, công dụng, ưu nhược điểm và bảng giá VPS

VPS là gì? Cách hoạt động, công dụng, ưu nhược điểm và bảng giá VPS

Bạn đang tìm hiểu về VPS nhưng chưa biết nó thực sự là gì, khác gì shared hosting và có thực sự cần thiết với website của mình không? Đây là câu hỏi mà rất nhiều chủ website, lập trình viên và doanh nghiệp vừa nhỏ đang gặp phải khi bắt đầu mở rộng hạ tầng. Trong bài viết này, Cloud360 sẽ giúp bạn hiểu rõ VPS từ A đến Z, biết chính xác khi nào nên dùng VPS và khi nào shared hosting là đủ.

Nguyễn Ngọc ThưTháng 9 22, 2026
VPS Anti DDoS là gì? Hướng dẫn chống DDoS cho VPS hiệu quả

VPS Anti DDoS là gì? Hướng dẫn chống DDoS cho VPS hiệu quả

VPS Anti DDoS là máy chủ ảo được kết hợp với hệ thống phát hiện, lọc và giảm thiểu lưu lượng tấn công từ chối dịch vụ phân tán trước khi traffic độc hại gây nghẽn đường truyền hoặc làm cạn kiệt tài nguyên máy chủ. Đây là lớp bảo vệ đặc biệt quan trọng với [...]

Ngô TúTháng 9 21, 2026
Điện toán đám mây là gì? Mô hình, lợi ích, ứng dụng và cách triển khai

Điện toán đám mây là gì? Mô hình, lợi ích, ứng dụng và cách triển khai

Điện toán đám mây hay Cloud Computing là mô hình cung cấp tài nguyên công nghệ thông tin như máy chủ, CPU, RAM, lưu trữ, cơ sở dữ liệu, mạng và phần mềm thông qua Internet. Thay vì phải mua máy chủ, xây dựng phòng máy và trực tiếp duy trì toàn bộ hạ tầng vật lý, cá [...]

Ngô TúTháng 9 21, 2026
VPS AMD là gì? Ưu nhược điểm, hiệu năng và cách chọn VPS phù hợp

VPS AMD là gì? Ưu nhược điểm, hiệu năng và cách chọn VPS phù hợp

VPS AMD là máy chủ ảo được triển khai trên máy chủ vật lý sử dụng bộ xử lý của AMD, phổ biến nhất trong môi trường data center là dòng AMD EPYC. Tương tự các loại VPS khác, mỗi máy chủ ảo được cấp vCPU, RAM, dung lượng lưu trữ, địa chỉ IP và hệ điều hành riêng. [...]

Ngô TúTháng 9 21, 2026
Top 10 nhà cung cấp VPS nước ngoài giá rẻ phổ biến nhất

Top 10 nhà cung cấp VPS nước ngoài giá rẻ phổ biến nhất

VPS nước ngoài giá rẻ là lựa chọn được nhiều lập trình viên, quản trị viên hệ thống, doanh nghiệp và chủ website quan tâm khi cần đặt máy chủ gần người dùng tại Mỹ, châu Âu, Singapore hoặc những thị trường quốc tế cụ thể. Điểm hấp dẫn của loại hình này nằm ở sự [...]

Nguyễn Ngọc ThưTháng 9 16, 2026
RAM là gì? Vai trò, phân loại và cách chọn RAM chuẩn

RAM là gì? Vai trò, phân loại và cách chọn RAM chuẩn

RAM là viết tắt của Random Access Memory – bộ nhớ truy cập ngẫu nhiên, có nhiệm vụ lưu tạm thời những dữ liệu mà CPU và các thành phần của hệ thống cần sử dụng ngay. Tốc độ truy xuất của RAM cao hơn đáng kể so với việc phải liên tục đọc dữ liệu từ [...]

Nguyễn Ngọc ThưTháng 9 15, 2026