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 configtestvà sửa các lỗiSyntax errornế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.






