(+84) 236.3827111 ex. 402

Tạo chứng chỉ SSL tự ký cho Nginx trên Debian 9 - Phần 2


TLS, hoặc transport layer security và SSL viết tắt của lớp cổng bảo mật, là các giao thức web được sử dụng để bọc lưu lượng bình thường trong một trình bao bọc được mã hóa, được bảo vệ.

Sử dụng công nghệ này, máy chủ có thể gửi lưu lượng truy cập an toàn giữa máy chủ và máy khách mà không có khả năng bị chặn bởi các bên bên ngoài. Hệ thống chứng chỉ cũng hỗ trợ người dùng xác minh danh tính của các trang web mà họ đang kết nối.
Bài viết sẽ hướng dẫn bạn cách thiết lập chứng chỉ SSL tự ký để sử dụng với máy chủ web Nginx trên máy chủ Debian 9.
...

Bước 1 - Tạo chứng chỉ SSL

Bước 2 - Cấu hình Nginx để sử dụng SSL

Bước 3 - Điều chỉnh tường lửa

Nếu bạn đã ufw bật tường lửa, như được hướng dẫn bởi các hướng dẫn điều kiện tiên quyết, bạn sẽ cần phải điều chỉnh cài đặt để cho phép lưu lượng SSL. May mắn thay, Nginx đăng ký một vài hồ sơ với ufw khi cài đặt.

Chúng ta có thể thấy các cấu hình có sẵn bằng cách gõ:

sudo ufw app list

Bạn sẽ thấy một danh sách như thế này:

Output
Available applications:
. . .
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
. . .

Bạn có thể xem cài đặt hiện tại bằng cách nhập:

sudo ufw status

Nó có thể sẽ giống như thế này, có nghĩa là chỉ lưu lượng HTTP được phép cho máy chủ web:

Output
Status: active
 
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Ngoài ra, hãy cho phép lưu lượng HTTPS, chúng ta có thể cho phép cấu hình "Nginx Full" và sau đó xóa phụ cấp hồ sơ "Nginx HTTP" dư thừa:

sudo ufw allow 'Nginx Full'

sudo ufw delete allow 'Nginx HTTP'

Trạng thái của bạn sẽ trông giống như sau:

sudo ufw status

Output
Status: active
 
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Bước 4 - Bật các thay đổi trong Nginx

Bây giờ chúng ta đã thực hiện các thay đổi và điều chỉnh tường lửa của mình, có thể khởi động lại Nginx để thực hiện các thay đổi mới.

Trước tiên, nên kiểm tra để đảm bảo rằng không có lỗi cú pháp trong file. có thể làm điều này bằng cách gõ:

sudo nginx -t

Nếu mọi thứ thành công, bạn sẽ nhận được kết quả như sau:

Output
nginx: [warn] "ssl_stapling" ignored, issuer certificate not found
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Chú ý cảnh báo ngay từ đầu. Như đã nói ở trên, cài đặt cụ thể này sẽ đưa ra cảnh báo vì chứng chỉ tự ký của Chúng ta không thể sử dụng tính năng ghim SSL. Điều này được mong đợi và máy chủ vẫn có thể mã hóa các kết nối một cách chính xác.

Nếu đầu ra của bạn khớp với ở trên, file cấu hình của bạn không có lỗi cú pháp. chúng ta có thể khởi động lại Nginx một cách an toàn để thực hiện các thay đổi:

sudo systemctl restart nginx

Bước 5 - Kiểm tra mã hóa

Bây giờ, Chúng ta đã sẵn sàng để kiểm tra máy chủ SSL của Chúng ta.

Mở trình duyệt web của bạn và gõ https:// tiếp theo là tên miền hoặc IP của máy chủ của bạn vào thanh địa chỉ:

https://server_domain_or_IP

Vì chứng chỉ mà chúng ta tạo không được ký bởi một trong các cơ quan cấp chứng chỉ đáng tin cậy của trình duyệt, bạn có thể thấy cảnh báo trông đáng sợ như cảnh báo bên dưới (thông tin sau xuất hiện khi sử dụng Google Chrome):

Cảnh báo chứng nhận tự ký Nginx

Điều này được mong đợi và bình thường. Chúng ta chỉ quan tâm đến khía cạnh mã hóa của chứng chỉ chứ không phải xác thực của bên thứ ba về tính xác thực của máy chủ. Click vào "ADVANCED" và sau đó liên kết được cung cấp để tiếp tục đến anyways lưu trữ của bạn:

Ghi đè tự ký Nginx

Bạn nên được đưa đến trang web của bạn. Nếu bạn nhìn vào thanh địa chỉ của trình duyệt, bạn sẽ thấy một khóa có dấu "x" trên đó. Trong trường hợp này, điều này chỉ có nghĩa là chứng chỉ không thể được xác nhận hợp lệ. Nó vẫn đang mã hóa kết nối của bạn.

Nếu bạn đã định cấu hình Nginx với hai khối máy chủ, tự động chuyển hướng nội dung HTTP sang HTTPS, bạn cũng có thể kiểm tra xem chức năng chuyển hướng có chính xác không:

http://server_domain_or_IP

Nếu điều này dẫn đến cùng một biểu tượng, điều này có nghĩa là chuyển hướng của bạn đã hoạt động chính xác.

Bước 6 - Thay đổi sang Chuyển hướng vĩnh viễn

Nếu chuyển hướng của bạn hoạt động chính xác và bạn chắc chắn rằng bạn chỉ muốn cho phép lưu lượng được mã hóa, bạn nên sửa đổi cấu hình Nginx để làm cho chuyển hướng vĩnh viễn.

Mở lại file cấu hình khối máy chủ của bạn:

sudo nano /etc/nginx/sites-available/example.com

Tìm return 302và thay đổi nó thành return 301:

/etc/nginx/sites-available/example.com

    return 301 https://$server_name$request_uri;

Lưu và đóng tập tin.

Kiểm tra cấu hình của bạn để tìm lỗi cú pháp:

sudo nginx -t

Khi bạn đã sẵn sàng, hãy khởi động lại Nginx để chuyển hướng vĩnh viễn:

sudo systemctl restart nginx

Phần kết luận

Bạn đã cấu hình máy chủ Nginx của mình để sử dụng mã hóa mạnh cho các kết nối clients. Điều này sẽ cho phép bạn phân phối các yêu cầu một cách an toàn và sẽ ngăn bên ngoài đọc lưu lượng truy cập của bạn.

>> Xem phần 1