0

[DevOps] Hướng dẫn thiết lập SSL Certificate (HTTPS) cho Website từ A-Z

Bạn có bao giờ để ý biểu tượng ổ khóa xanh trên thanh địa chỉ trình duyệt không? Đó chính là minh chứng cho việc website đã được cài đặt SSL (Secure Sockets Layer).

Việc thiết lập SSL không chỉ giúp bảo mật dữ liệu truyền tải giữa người dùng và server mà còn là yếu tố sống còn để cải thiện thứ hạng SEO. Bài viết này sẽ hướng dẫn bạn cách "lên đời" HTTPS cho website một cách đơn giản nhất.

1. SSL Certificate hoạt động như thế nào?

Khi bạn cài đặt SSL, dữ liệu sẽ được mã hóa trước khi gửi đi. Ngay cả khi hacker đánh cắp được gói tin, chúng cũng không thể đọc được nội dung bên trong vì không có "chìa khóa".

2. Các loại SSL phổ biến

Trước khi cài đặt, bạn cần biết mình thuộc nhóm nào:

Self-Signed SSL: Tự ký, không tốn phí nhưng trình duyệt sẽ hiện cảnh báo "Kết nối không an toàn". Chỉ nên dùng để test nội bộ.

Let's Encrypt (Free): Phổ biến nhất thế giới hiện nay. Miễn phí, tự động gia hạn, cực kỳ an toàn.

Paid SSL (Comodo, DigiCert...): Có bảo hiểm, phù hợp cho ngân hàng, thương mại điện tử lớn.

3. Hướng dẫn cài đặt SSL miễn phí với Let's Encrypt (Nginx)

Đây là cách "quốc dân" mà mọi Developer nên biết. Chúng ta sẽ sử dụng công cụ Certbot.

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

Trên Ubuntu/Debian, bạn chạy lệnh:

sudo apt update
sudo apt install certbot python3-certbot-nginx

Bước 2: Lấy chứng chỉ SSL

Certbot rất thông minh, nó sẽ tự quét file cấu hình Nginx của bạn và thực hiện mọi thứ:

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

Hệ thống sẽ hỏi Email của bạn và yêu cầu bạn đồng ý với các điều khoản.

Bước 3: Cấu hình tự động gia hạn (Auto-renew)

Chứng chỉ của Let's Encrypt có thời hạn 90 ngày. Nhưng đừng lo, chúng ta sẽ đặt lịch tự động làm mới:

sudo certbot renew --dry-run

(Thường thì Certbot đã tự cài đặt một cronjob để lo việc này cho bạn rồi).

4. Kiểm tra cấu hình trong Nginx

Sau khi chạy Certbot, file config Nginx của bạn (/etc/nginx/sites-available/default) sẽ tự động được cập nhật trông như thế này:

server {
    listen 443 ssl; # Cổng HTTPS
    server_name yourdomain.com;

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

    # Cấu hình bảo mật thêm (Ciphers, Protocols...)
    include /etc/letsencrypt/options-ssl-nginx.conf;
}

# Tự động chuyển hướng từ HTTP sang HTTPS
server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}

5. Những lưu ý sau khi cài đặt SSL

Mixed Content: Hãy kiểm tra xem website có còn load ảnh hay script từ link http:// không. Nếu có, trình duyệt vẫn sẽ báo lỗi bảo mật.

HSTS: Nên bật HTTP Strict Transport Security để bắt buộc trình duyệt luôn sử dụng HTTPS cho những lần truy cập sau.

Check Score: Sử dụng công cụ SSL Labs để kiểm tra xem cấu hình của bạn đạt điểm A hay C nhé.

Lời kết

Cài đặt SSL không còn là việc quá khó khăn hay tốn kém như ngày xưa. Với Let's Encrypt, bạn chỉ mất chưa đầy 5 phút để bảo vệ người dùng của mình. Đừng để website của mình bị đánh dấu là "Not Secure" nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí