Cấu hình SSL/TLS với Nginx trên Ubuntu

Để cấu hình SSL/TLS với Nginx trên Ubuntu, bạn có thể làm theo các bước sau:

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

Nếu bạn chưa cài đặt Nginx, chạy lệnh sau để cài đặt nó:

sudo apt update
sudo apt install nginx

Bước 2: Cài đặt OpenSSL

Nếu bạn chưa có OpenSSL, cài đặt nó bằng lệnh sau:

sudo apt install openssl

Bước 3: Tạo thư mục cho các tệp chứng chỉ

Tạo thư mục để chứa các tệp chứng chỉ SSL:

sudo mkdir /etc/nginx/ssl

Bước 4: Tạo chứng chỉ SSL/TLS self-signed (tự ký) (Tuỳ chọn)

Nếu bạn không sử dụng chứng chỉ SSL của một tổ chức chứng thực, bạn có thể tạo chứng chỉ tự ký bằng OpenSSL. Đây là cách để thử nghiệm SSL/TLS trên môi trường phát triển. Để tạo chứng chỉ tự ký, chạy các lệnh sau:

cd /etc/nginx/ssl
sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Bước 5: Cấu hình Nginx sử dụng SSL/TLS

Mở tệp cấu hình của Nginx cho trang web bạn muốn bảo mật:

sudo vi /etc/nginx/sites-available/your_domain

Thêm các dòng sau vào tệp cấu hình để kích hoạt SSL:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain.com www.your_domain.com;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    # Các tùy chọn SSL/TLS bổ sung có thể được thêm ở đây (tùy chọn)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    
    # Cấu hình thêm (nếu cần thiết)
    
    location / {
        # Cấu hình reverse proxy (nếu cần thiết)
    }
}

Bước 6: Kích hoạt cấu hình và khởi động lại Nginx

Tạo liên kết từ tệp cấu hình trong sites-available đến sites-enabled để kích hoạt cấu hình:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Kiểm tra xem cấu hình của Nginx có lỗi không:

sudo nginx -t

Nếu không có lỗi, khởi động lại dịch vụ Nginx để áp dụng cấu hình mới:

sudo systemctl restart nginx

Sau khi hoàn tất, trang web của bạn sẽ được bảo mật bằng SSL/TLS. Lưu ý rằng việc sử dụng chứng chỉ tự ký sẽ dẫn đến trình duyệt cảnh báo về chứng chỉ không được xác thực. Để có chứng chỉ SSL/TLS đã xác thực, bạn cần phải mua hoặc lấy miễn phí chứng chỉ từ một cơ quan chứng thực.