Giới thiệu

Triển khai một website trên Internet không chỉ dừng lại ở việc đưa mã nguồn lên server mà còn phải đảm bảo tính bảo mật cho người dùng. Việc cài đặt chứng chỉ SSL và chuyển hướng toàn bộ lưu lượng HTTP sang HTTPS là bước quan trọng nhất để đạt được mục tiêu này.

Cấu hình SSL trên Apache

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

Certbot là công cụ chính thức của Let's Encrypt giúp tự động tạo và gia hạn chứng chỉ SSL. Trên hệ thống Ubuntu, bạn có thể cài đặt Certbot bằng các lệnh sau:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-apache

Bước 2: Tạo chứng chỉ SSL

Sau khi cài đặt xong, chạy lệnh dưới đây để yêu cầu chứng chỉ cho tên miền chính và tên miền phụ (www). Certbot sẽ tự động cấu hình Apache cho bạn.

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

Nếu muốn sử dụng chế độ standalone vì không có Apache đang chạy, thay --apache bằng --standalone.

Bước 3: Kiểm tra cấu hình VirtualHost

Mặc dù Certbot đã tự động chỉnh sửa, bạn vẫn nên kiểm tra lại file cấu hình để chắc chắn rằng các tham số SSL được đặt chính xác.

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Đảm bảo rằng AllowOverride All được bật để .htaccess có thể thực thi các quy tắc rewrite.

Redirect toàn bộ HTTP sang HTTPS

Sử dụng .htaccess

Trong một số trường hợp, bạn muốn kiểm soát chuyển hướng ở mức .htaccess thay vì VirtualHost. Thêm đoạn mã sau vào file .htaccess nằm trong thư mục gốc của website.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Quy tắc này sẽ kiểm tra nếu kết nối không phải HTTPS, sau đó chuyển hướng người dùng tới URL bảo mật với mã trạng thái 301 (Moved Permanently).

Kiểm tra và khắc phục lỗi thường gặp

  • Chứng chỉ chưa được làm mới: Sử dụng sudo certbot renew --dry-run để kiểm tra quá trình gia hạn tự động.
  • Apache không khởi động được: Kiểm tra file cấu hình bằng apachectl configtest và sửa các lỗi Syntax error nếu có.
  • Truy cập HTTP vẫn hiển thị: Đảm bảo rằng không có VirtualHost nào còn lắng nghe trên cổng 80 mà không có lệnh Redirect.
  • Mixed content (nội dung hỗn hợp): Kiểm tra các tài nguyên tĩnh (CSS, JS, hình ảnh) để chắc chắn chúng được tải qua https:// hoặc sử dụng // để tự động chọn giao thức.

Kết luận

Việc cấu hình SSL và chuyển hướng HTTPS không chỉ nâng cao độ tin cậy mà còn cải thiện SEO cho website. Khi đã nắm vững quy trình này, bạn có thể áp dụng cho bất kỳ dự án nào, dù là server riêng, VPS hay hosting chia sẻ.

Để nắm bắt toàn bộ quy trình Deploy Web từ A‑Z, Tham khảo khóa học "Deploy Web - Triển khai website lên môi trường Internet" tại đây.