TDCLOUD  ·  0%
Hướng Dẫn

Cách trỏ tên miền về VPS và cài SSL miễn phí Let's Encrypt

C
Cố Tổng
06/10/2026
2 lượt xem

Bạn đã có VPS và một tên miền, giờ muốn khách gõ example.com là vào đúng website trên VPS, có ổ khoá HTTPS đàng hoàng? Bài này hướng dẫn trỏ tên miền về VPS bằng bản ghi A, rồi cài SSL miễn phí Let's Encrypt bằng Certbot trên Nginx. Toàn bộ chỉ mất khoảng 15–30 phút, phần lâu nhất thường là chờ DNS cập nhật.

Tóm tắt các bước:

  1. Tạo 2 bản ghi A (@ và www) trỏ về IP VPS.
  2. Kiểm tra tên miền đã nhận IP mới bằng nslookup hoặc dig.
  3. Cài Nginx và khai báo tên miền trong cấu hình.
  4. Mở cổng 80 và 443 trên tường lửa.
  5. Cài Certbot, chạy một lệnh để lấy và cài chứng chỉ.
  6. Kiểm tra tự gia hạn.

Bài viết dùng tên miền mẫu example.com và IP mẫu 203.0.113.25, bạn thay bằng tên miền và IP thật của mình. Các lệnh chạy trên Ubuntu 22.04 trở lên hoặc Debian. Nếu chưa biết cách vào VPS, xem trước bài kết nối VPS Linux qua SSH.

Bước 1: Trỏ tên miền về VPS bằng bản ghi A

Đăng nhập vào trang quản lý tên miền ở nơi bạn mua tên miền (hoặc ở Cloudflare nếu bạn đã chuyển nameserver sang đó), tìm mục Quản lý DNS / DNS Records. Tên gọi mỗi nhà cung cấp hơi khác nhau nhưng các ô cần điền đều giống nhau:

LoạiTên (Host)Giá trịTTL
A@IP của VPS3600 (hoặc mặc định)
AwwwIP của VPS3600 (hoặc mặc định)
  • @ đại diện cho tên miền gốc example.com.
  • www dành cho www.example.com. Có thể dùng bản ghi CNAME www → example.com thay cho bản ghi A, kết quả như nhau.
  • TTL là thời gian (giây) các máy chủ DNS khác ghi nhớ bản ghi. Để 3600 (1 giờ) là phổ biến. Nếu sắp đổi IP, hạ xuống 300 trước vài giờ để thay đổi lan nhanh hơn.

Nếu đã có bản ghi A cũ trỏ đi nơi khác (ví dụ về hosting cũ), hãy sửa nó thay vì thêm bản ghi mới. Hai bản ghi A cùng tên với hai IP khác nhau sẽ khiến khách lúc vào web mới, lúc vào web cũ.

Bảng quản lý DNS với hai bản ghi A cho @ và www trỏ về IP VPS 203.0.113.25
Hai bản ghi A cho @ và www, cùng trỏ về IP chính của VPS. Giao diện ở mỗi nhà đăng ký tên miền có thể khác, nhưng các ô cần điền như nhau.

Bước 2: Kiểm tra tên miền đã trỏ đúng chưa

Bản ghi mới thường có hiệu lực sau vài phút, chậm nhất có thể vài giờ tuỳ TTL cũ. Kiểm tra bằng:

# Trên Windows (PowerShell hoặc CMD)
nslookup example.com

# Trên Linux / macOS
dig +short example.com
dig +short www.example.com

Khi kết quả trả về đúng IP VPS là xong phần DNS. Nếu vẫn ra IP cũ, đợi thêm hoặc thử hỏi thẳng DNS của Google: nslookup example.com 8.8.8.8.

Kết quả nslookup trên Windows và dig trên Linux trả về IP VPS 203.0.113.25
nslookup và dig cùng trả về IP của VPS: tên miền đã trỏ thành công.

Đừng chạy Certbot khi DNS chưa trỏ xong. Let's Encrypt sẽ kiểm tra tên miền bằng cách truy cập vào IP mà DNS trả về. Trỏ chưa xong thì lần xin chứng chỉ sẽ thất bại, và chạy sai nhiều lần liên tiếp có thể bị giới hạn tạm thời.

Bước 3: Cài Nginx và khai báo tên miền

Nếu VPS chưa có web server, cài Nginx:

sudo apt update
sudo apt install -y nginx

Tạo file cấu hình cho tên miền. Certbot sẽ tìm khối server có server_name trùng tên miền để tự thêm phần SSL:

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

Dán nội dung sau (thay example.com bằng tên miền của bạn):

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

Tạo thư mục web, bật cấu hình và kiểm tra:

sudo mkdir -p /var/www/example.com
echo "Xin chao tu VPS" | sudo tee /var/www/example.com/index.html
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Lúc này mở http://example.com phải thấy dòng chữ vừa tạo. Nếu bạn định chạy WordPress, có thể làm theo bài cài WordPress lên VPS rồi quay lại bước cài SSL.

Bước 4: Mở cổng 80 và 443

Nếu bạn đã bật tường lửa UFW theo bài bảo mật VPS Linux cơ bản, cần cho phép HTTP (80) và HTTPS (443). Nginx có sẵn hồ sơ Nginx Full gồm cả hai cổng:

sudo ufw allow 'Nginx Full'
sudo ufw status

Cổng 80 phải mở kể cả khi bạn chỉ muốn chạy HTTPS, vì Let's Encrypt kiểm tra tên miền qua cổng 80. Muốn hiểu thêm về các cổng, xem bài port là gì.

Bước 5: Cài SSL Let's Encrypt bằng Certbot

Cài Certbot kèm plugin cho Nginx từ kho của Ubuntu:

sudo apt install -y certbot python3-certbot-nginx
Terminal mở cổng Nginx Full bằng UFW và cài certbot python3-certbot-nginx
Mở cổng 80/443 và cài Certbot. Gói cài đặt tạo sẵn bộ hẹn giờ certbot.timer để tự gia hạn.

Chạy lệnh lấy chứng chỉ cho cả tên miền gốc và www:

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

Certbot sẽ hỏi lần lượt:

  1. Email: dùng để Let's Encrypt báo khi chứng chỉ sắp hết hạn mà chưa gia hạn được.
  2. Đồng ý điều khoản: gõ Y.
  3. Có nhận email tin tức của EFF không: tuỳ bạn, gõ Y hoặc N.

Sau đó Certbot tự xác minh tên miền, lấy chứng chỉ, sửa cấu hình Nginx để dùng HTTPS và chuyển hướng HTTP sang HTTPS.

Kết quả lệnh certbot --nginx: Successfully received certificate và Congratulations! You have successfully enabled HTTPS
Thấy dòng Congratulations! nghĩa là chứng chỉ đã được cài cho cả example.com và www.example.com.

Mở lại trình duyệt, truy cập https://example.com: thanh địa chỉ có biểu tượng ổ khoá và trình duyệt không còn cảnh báo "Không bảo mật".

Trình duyệt mở https://example.com với biểu tượng ổ khoá, chứng chỉ do Let's Encrypt cấp
Website đã chạy HTTPS với chứng chỉ Let's Encrypt.

Bước 6: Kiểm tra tự gia hạn chứng chỉ

Chứng chỉ Let's Encrypt có hạn 90 ngày. Bạn không cần nhớ để gia hạn tay: gói Certbot trên Ubuntu cài sẵn bộ hẹn giờ certbot.timer, chạy 2 lần mỗi ngày và tự gia hạn những chứng chỉ còn dưới 30 ngày. Chỉ cần chạy thử một lần để chắc chắn mọi thứ ổn:

sudo certbot renew --dry-run
systemctl list-timers | grep certbot
Lệnh certbot renew --dry-run báo success và certbot.timer đang hoạt động
--dry-run chỉ chạy thử, không thay chứng chỉ thật. Kết quả (success) là quá trình tự gia hạn sẽ hoạt động.

Dùng Cloudflare thì cần lưu ý gì?

Nếu tên miền đặt DNS ở Cloudflare và bản ghi đang bật Proxy (đám mây màu cam), khách sẽ thấy IP của Cloudflare thay vì IP VPS. Certbot với cách xác minh qua cổng 80 vẫn thường chạy được, nhưng để tránh rối khi làm lần đầu:

  • Tạm chuyển bản ghi về DNS only (đám mây xám), cài SSL như trên, rồi mới bật lại Proxy.
  • Khi bật lại Proxy, vào mục SSL/TLS của Cloudflare chọn chế độ Full (strict). Chế độ Flexible dễ gây lỗi chuyển hướng vòng lặp với cấu hình Certbot.

Lỗi thường gặp

Certbot báo "Timeout during connect" hoặc "Connection refused"

Let's Encrypt không truy cập được cổng 80 của VPS. Kiểm tra: DNS đã trỏ đúng IP chưa (Bước 2), UFW đã mở Nginx Full chưa, Nginx có đang chạy không (systemctl status nginx).

Certbot báo "Could not automatically find a matching server block"

Cấu hình Nginx chưa có server_name trùng tên miền. Xem lại Bước 3, nhớ chạy sudo nginx -t và sudo systemctl reload nginx sau khi sửa.

Vào được http nhưng https báo lỗi hoặc chuyển hướng liên tục

Thường gặp khi dùng Cloudflare ở chế độ Flexible. Chuyển sang Full (strict) như hướng dẫn ở trên.

Đổi IP VPS xong website không vào được

Nhớ sửa lại bản ghi A sang IP mới. Chứng chỉ SSL gắn với tên miền, không gắn với IP, nên không cần cài lại.

Câu hỏi thường gặp

SSL Let's Encrypt có thực sự miễn phí?

Có. Let's Encrypt là tổ chức phi lợi nhuận cấp chứng chỉ miễn phí. Chứng chỉ mã hoá kết nối như chứng chỉ trả phí loại DV; khác biệt chủ yếu là thời hạn ngắn (90 ngày, có tự gia hạn) và không có loại xác minh doanh nghiệp (OV/EV).

Một VPS chạy được nhiều tên miền có SSL không?

Được. Mỗi tên miền tạo một file cấu hình Nginx riêng với server_name của nó, rồi chạy certbot --nginx -d tenmien2.com -d www.tenmien2.com tương tự.

Bao lâu thì DNS cập nhật?

Thường vài phút đến 1 giờ. Trường hợp TTL cũ đặt dài hoặc vừa đổi nameserver có thể mất tới 24–48 giờ.

VPS Windows có cài SSL kiểu này được không?

Bài này dành cho Linux với Nginx. Trên Windows Server dùng IIS, bạn có thể dùng công cụ như win-acme để lấy chứng chỉ Let's Encrypt, cách làm khác với hướng dẫn ở đây.

Nếu làm theo các bước mà vẫn chưa lên HTTPS, hãy gửi cho đội kỹ thuật TDCLOUD ảnh chụp thông báo lỗi của Certbot để được kiểm tra cùng. Cần VPS để chạy website, bạn có thể tham khảo các gói VPS giá rẻ hoặc VPS tiêu chuẩn.

Nếu bạn thấy bài viết này hữu ích...

Nhấp vào ngôi sao để đánh giá!

Chưa có đánh giá nào. Hãy là người đầu tiên!

Có thể bạn quan tâm