Cấu hình SSL tự động trên Server bằng Caddy
Nếu đang chạy Website dưới dạng Service hoặc bằng Apache2/Nginx, ta có thể sử dụng Caddy như một Reverse Proxy để tự động cấu hình SSL vô cùng đơn giản. Bài viết này sẽ hướng dẫn ta thực hiện điều đó.
Cài đặt Caddy
Đối với Ubuntu 24.04 trở lên
apt update
apt install caddy
Đối với Ubuntu 22.04 trở xuống
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
Đối với Centos 7
yum install yum-plugin-copr
yum copr enable @caddy/caddy
yum install caddy
Đối với Centos 8 trở lên
dnf install 'dnf-command(copr)'
dnf copr enable @caddy/caddy
dnf install caddy
Cấu hình Caddy và Website
Đối với Website chạy dưới dạng Service
Ta cấu hình như sau
vim /etc/caddy/Caddyfile
yourdomain.com {
root * /path-to-website #Trỏ tới thư mục chứa website
file_server #Cấu hình này sẽ tự động tìm đến các trang như index.html, index.php
}
sudo systemctl restart caddy
Đối với Website chạy Webserver (Apache2/Nginx)
Do Caddy chỉ cấp SSL khi được chạy trên port 80 và 443, vì vậy nếu Apache2 hoặc Nginx đã đang chạy trên các Port này, ta cần phải thay đổi chúng để Caddy có thể hoạt động
- Apache2:
Chỉnh sửa file /etc/apache2/ports.conf
vim /etc/apache2/ports.conf
Đổi Listen từ cổng 80 sang cổng khác
Listen 8080
Chỉnh sửa file /etc/apache2/sites-available/mysite.conf
vim /etc/apache2/sites-available/mysite.conf
Khởi động lại Apache2
systemctl restart apache2
- Đối với Nginx:
Chỉnh sửa file /etc/nginx/sites-available/default
listen 8080
Khởi động lại Nginx
systemctl restart nginx
Sau khi cấu hình xong Web Server, ta cấu hình lại Caddy
vim /etc/caddy/Caddyfile
Cấu hình file như sau (comment lại các cấu hình sẵn có nếu không cần)
yourdomain.com {
reverse_proxy localhost:8080
}
Khởi động lại caddy
systemctl restart caddy
Giờ ta vào lại Website sẽ thấy có SSL.