Cách Config SSL Nginx trong Linux

1. SSL là gì?

SSL (viết tắt của lớp cổng bảo mật) là một giao thức web giúp bảo mật lưu lượng giữa máy chủ và máy khách bằng cách mã hóa nó. Máy chủ và máy khách truyền tải lưu lượng một cách an toàn mà không có nguy cơ thông tin liên lạc bị bên thứ ba diễn giải. Nó cũng giúp khách hàng xác minh danh tính của trang web mà họ đang liên lạc.

2. Cách Config SSL Nginx trong Linux

Cần chuẩn bị:

Đối với bài đăng này, bạn nên có các điều kiện tiên quyết sau:

  • Nginx đã được cài đặt trên máy của bạn
  • Server được định cấu hình cho tên miền của bạn
  • Người dùng có quyền sudo

Bước 1: Tạo chứng chỉ tự ký

Bước đầu tiên của chúng tôi sẽ là tạo chứng chỉ tự ký. Đưa ra lệnh bên dưới trong Terminal để tạo CSR (Yêu cầu ký chứng chỉ) và khóa:

sudo openssl req -x509 -nodes -days 365 -newkey rsa : 2048 -keyout /etc/ssl/private/selfsigned-nginx.key -out /etc/ssl/certs/selfsigned-nginx.crt _ _ _ _ _ _ _ _ _ _ _
Bạn sẽ được nhắc cung cấp một số thông tin như tên quốc gia, tiểu bang, địa phương, tên chung (tên miền hoặc địa chỉ IP của bạn) và địa chỉ email.

Trong lệnh trên, OpenSSL sẽ tạo hai tệp sau:

  • CSR:  selfsigned-nginx.crt trong folder /etc/ssl/cert/
  • Key: selfsigned-nginx.key trong  folder /etc/ssl/private 

Bây giờ hãy tạo file dhparam.pem bằng lệnh bên dưới:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 _ _ _ _ _ _
Bước 2: Định cấu hình Nginx để sử dụng SSL

Đưa ra lệnh dưới đây trong Terminal để tạo tệp self-signed.conf đoạn cấu hình mới trong /etc/nginx/snippets.

sudo nano /etc/nginx/snippets/self-signed.conf
Trong tệp, thêm các dòng sau:
ssl_certificate /etc/ssl/certs/selfsigned-nginx.crt;
ssl_certificate_key /etc/ssl/private/selfsigned-nginx.key;

ssl_certificate được đặt thành selfsigned-nginx.crt (certificate file) trong khi ssl_certificate_key được đặt thành selfsigned-nginx.key ( key file).

Lưu và đóng tệp self-signed.conf .

Bây giờ chúng ta sẽ tạo một tệp đoạn trích khác ssl-params.conf và định cấu hình một số cài đặt SSL cơ bản. Đưa ra lệnh dưới đây trong Terminal để chỉnh sửa tệp ssl-params.conf :

sudo nano / etc / nginx / đoạn trích / ssl-params.conf
Thêm nội dung sau vào tệp:
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout  10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# ssl_stapling on;
# ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection “1; mode=block”;

Bước 3: Định cấu hình Nginx để sử dụng SSL

Bây giờ chúng ta sẽ mở tệp cấu hình khối máy chủ Nginx để thực hiện một số cấu hình. Trong bước này, chúng tôi sẽ giả sử bạn đã thiết lập khối máy chủ, khối này sẽ tương tự như sau:

server {

        listen 80;
        listen [::]:80;
        root /var/www/test.org/html;
        index index.html index.htm index.nginx-debian.html;
        server_name test.org www.test.org;
        location / {
                try_files $uri $uri/ =404;
        }
}

Để mở tệp cấu hình khối máy chủ Nginx, hãy sử dụng lệnh bên dưới:

sudo nano /etc/nginx/sites-available/test.org _ _ _ _ _ _ _

Bây giờ sửa đổi server hiện có để làm cho nó trông như thế này:

server {
listen 443 ssl;
listen [::]:443 ssl;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
root /var/www/test.org/html;
index index.html index.htm index.nginx-debian.html;
server_name test.org www.test.org
}

Trong các cấu hình trên, chúng tôi cũng đã thêm các đoạn mã SSL self-signed.conf và ssl-params.conf mà chúng tôi đã cấu hình trước đó.

Tiếp theo, thêm khối máy chủ thứ hai

server {
    listen 80;
    listen [::]:80;
    server_name test.org www.test.org;
    return 302 https://$server_name$request_uri;
}

Trong cấu hình trên, return 302 chuyển hướng HTTP sang HTTPS.

Lưu ý : Đảm bảo thay thế test.org bằng tên miền của riêng bạn. Bây giờ hãy lưu và đóng tệp.

Bước 4: Cho phép lưu lượng SSL qua tường lửa

Nếu tường lửa được bật trên hệ thống của bạn, bạn sẽ phải cho phép lưu lượng SSL đi qua nó. Nginx cung cấp cho bạn ba cấu hình khác nhau với ufw. Bạn có thể xem chúng bằng lệnh bên dưới trong Terminal:

sudo ufw app list
Bạn sẽ thấy đầu ra sau với ba cấu hình cho lưu lượng Nginx.

Bạn sẽ cần cho phép cấu hình “Nginx Full” trong tường lửa. Để làm như vậy, sử dụng lệnh dưới đây:

sudo ufw allow ‘Nginx Full’

Để xác minh xem cấu hình đã được cho phép trong tường lửa hay chưa, hãy sử dụng lệnh bên dưới:

$ sudo ufw status

Bước 5: Kiểm tra tệp cấu hình NGINX

Bây giờ hãy kiểm tra tệp cấu hình Nginx bằng lệnh bên dưới trong Terminal:

$ sudo nginx -t

Bạn sẽ thấy đầu ra dưới đây.

Bây giờ hãy tạo liên kết tượng trưng giữa các trang có sẵn và các trang được kích hoạt:

ln -s /etc/nginx/sites-available/test.com/etc/nginx/sites-enabled/ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Sau đó khởi động lại dịch vụ Nginx để áp dụng các thay đổi cấu hình. Sử dụng lệnh dưới đây để làm như vậy:

sudo systemctl restart nginx

Bước 6: Kiểm tra SSL

Bây giờ để kiểm tra SSL, hãy điều hướng đến địa chỉ sau:

https://domain -or-địa chỉ IP

Vì chúng tôi đã thiết lập chứng chỉ tự ký, do đó, chúng tôi sẽ thấy cảnh báo rằng kết nối không an toàn. Trang sau xuất hiện khi sử dụng trình duyệt Mozilla Firefox.

Nhấp vào nút Nâng cao .

Nhấp vào Thêm ngoại lệ.

Sau đó nhấp vào Xác nhận ngoại lệ bảo mật.

Bây giờ bạn sẽ thấy trang web HTTPS của mình nhưng có dấu hiệu cảnh báo (khóa có dấu hiệu cảnh báo màu vàng) về tính bảo mật của trang web của bạn.

Ngoài ra, hãy kiểm tra xem chuyển hướng có hoạt động chính xác hay không bằng cách truy cập miền hoặc địa chỉ IP của bạn bằng http.

http://domain -or-địa chỉ IP

Bây giờ, nếu trang web của bạn tự động chuyển hướng đến HTTPS, điều này có nghĩa là chuyển hướng đã hoạt động bình thường. Để định cấu hình chuyển hướng vĩnh viễn, hãy chỉnh sửa tệp cấu hình khối máy chủ bằng lệnh bên dưới trong Terminal:

sudo nano /etc/nginx/sites-available/test.org _ _ _ _ _ _ _

Bây giờ thay đổi return 302 thành return 301 trong tệp, sau đó lưu và đóng tệp.

Đó là cách bạn có thể thiết lập SSL cho Nginx trong hệ thống Debian 10. Chúng tôi đã thiết lập chứng chỉ tự ký để trình diễn. Nếu bạn đang ở trong môi trường sản xuất, hãy luôn lấy chứng chỉ CA.

0/5 (0 Reviews)

Leave a Comment