Hướng dẫn bảo mật Nginx với Let’s Encrypt trên Ubuntu 20.04

Trong thế giới kỹ thuật ngày nay, bảo mật là một yếu tố tiên quyết trong quá trình  triển khai các trang web và ứng dụng trực tuyến. Trong bài viết dưới đây, hãy cùng LANIT khám phá cách bảo mật Nginx với Let’s Encrypt trên Ubuntu 20.04 một cách chi tiết nhất nhé!

Giới thiệu tổng quan

Let’s Encrypt là một dịch vụ hỗ trợ cung cấp chứng chỉ bảo mật SSL/TLS cho các trang web một cách dễ dàng và hoàn toàn miễn phí. Để đơn giản hóa cho việc này, Let’s Encrypt cung cấp công cụ Certbot, giúp tự động hoá việc yêu cầu, lấy và cài đặt chứng chỉ trên các máy chủ web phổ biến như Apache và Nginx.

Sau đây, chúng tôi sẽ chia sẻ các bước  hướng dẫn cách sử dụng Certbot để dễ dàng lấy chứng chỉ SSL miễn phí cho máy chủ Nginx trên hệ điều hành Ubuntu 20.04. Và  cũng như cách cấu hình để chứng chỉ này được gia hạn một cách  tự động.

Chuẩn bị

Trước khi thực hiện việc bảo mật Nginx bằng Let’s Encrypt trên Ubuntu 20.04, bạn cần chuẩn bị một số yêu cầu cơ bản như sau:

  • Máy chủ Ubuntu 20.04: Đảm bảo bạn đã có một máy chủ chạy trên hệ điều hành Ubuntu 20.04.
  • Quyền sudo: Bạn cần có quyền sudo để thực hiện các tác vụ trong quản lý hệ thống.
  • Tài khoản người dùng non-root: Bạn hãy tạo một tài khoản người dùng không có quyền root để thực hiện các tác vụ hàng ngày. Việc không sử dụng tài khoản root giúp tăng cường bảo mật cho trang web của bạn.
  • Tường lửa: Đảm bảo bạn đã cài đặt và thiết lửa tường lửa để bảo vệ máy chủ của mình, giúp kiểm soát lưu lượng mạng vào và ra máy chủ.
  • Tên miền đã đăng ký: Bạn cần đăng ký một tên miền cho trang web của bạn.
  • Bản ghi DNS: Để chứng minh rằng bạn kiểm soát tên miền, bạn cần thiết lập bản ghi DNS để trỏ đến địa chỉ IP Public của máy chủ.
  • Cài đặt Nginx: Đảm bảo rằng Nginx đã được cài đặt trên máy chủ của bạn. Nginx sẽ được sử dụng để chạy trang web và xử lý các yêu cầu liên quan đến Let’s Encrypt.
  • Các tệp cấu hình Nginx: Bạn cần có các tệp cấu hình Nginx cho tên miền của bạn, bao gồm cả server block tương ứng.

Cách bảo mật Nginx với Let’s Encrypt trên Ubuntu 20.04

Dưới đây là hướng dẫn chi tiết  cách bảo mật Nginx với Let’s Encrypt trên Ubuntu bạn có thể tham khảo và áp dụng nhé!

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

Trong bước đầu tiên, bạn cần phải cài đặt phần mềm Certbot trên máy chủ của bạn để sử dụng Let’s Encrypt để lấy chứng chỉ SSL.

Bạn có thể cài đặt Certbot cùng với plugin của Nginx bằng  cách sử dụng lệnh apt:

sudo apt install certbot python3-certbot-nginx

Sau khi quá trình cài đặt hoàn tất, Certbot lúc này đã sẵn sàng để sử dụng. Tuy nhiên, để cho phép phần mềm  Certbot tự động cấu hình SSL cho Nginx, bạn cần phải thiết lập một số thông tin chi tiết  trong quá trình cài đặt.

Bước 2: Xác nhận cấu hình Nginx

Để xác nhận cấu hình của Nginx dựa trên thông tin tên miền, bạn cần làm theo các bước sau:

Mở tệp cấu hình

Sử dụng trình soạn thảo văn bản như “nano” hoặc “vi” để mở tệp cấu hình cho tên miền của bạn. Giả sử tên miền của bạn là  “example.com“, bạn có thể sử dụng lệnh sau:

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

Tìm “server_name”

Trong tệp cấu hình, tìm dòng chứa “server_name”. Chỉ thị này liệt kê các tên miền trong khối server. Để thực hiện bạn có thể thao tác theo lệnh sau:

server_name example.com www.example.com;

Kiểm tra và lưu tệp

Nếu thông tin tên miền trong chỉ thị “server_name” khớp với tên miền của bạn, hãy thoát trình soạn thảo và lưu tệp cấu hình.

Kiểm tra cú pháp cấu hình

Để đảm bảo cú pháp của tệp cấu hình là chính xác hay chưa, sử dụng lệnh sau để kiểm tra:

sudo nginx -t

Nếu bạn thấy thông báo lỗi, hãy kiểm tra lại tệp cấu hình và sửa các lỗi cú pháp hoặc chính tả.

Tải lại nginx 

Khi cú pháp của tệp cấu hình đã chính xác, hãy tải lại Nginx để áp dụng cấu hình mới:

sudo systemctl reload nginx

Khi bạn hoàn tất các bước này, bạn đã xác nhận và cập nhật cấu hình Nginx theo thông tin tên miền của bạn thành công. Việc xác nhận cấu hình của Nginx giúp Certbot tìm thấy và cập nhật tự động khối server một chính xác nhất.

Xem thêm >>> Cách Tạo Chứng Chỉ SSL Tự Ký cho Nginx trên Centos 7

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

Nếu bạn đã kích hoạt tường lửa ufw, thì lúc này bạn cần cấu hình lại để cho phép lưu lượng HTTPS qua tường lửa. May mắn là khi bạn cài đặt Nginx, một số thông tin đã được tự động tạo ra bởi ufw.

Để kiểm tra cài đặt hiện tại, hãy chạy lệnh sau đây:

sudo ufw status

Kết quả bạn nhận được sẽ hiện ra như sau đây:

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

Để cho phép lưu lượng HTTPS qua tường lửa, bạn cần kích hoạt hồ sơ “Nginx Full” và xóa sự cho phép lặp lại của hồ sơ “Nginx HTTP”. Để làm điều đó bạn có thể sử dụng lệnh sau đây:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

Khi hoàn thành, trạng thái ufw nên sẽ được hiển thị như sau đây:

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

Sau khi đã hoàn tất các bước trên, bạn có thể tiếp tục chạy Certbot để lấy chứng chỉ của mình.

Bước 4: Lấy Chứng Chỉ SSL

Sử dụng cerbot bạn sẽ có nhiều  để lấy chứng chỉ SSL thông qua các plugin.Với Plugin Nginx sẽ tự động cấu hình lại Nginx và tải lại cấu hình khi cần thiết. Bạn có thể sử dụng lệnh sau đây để sử dụng plugin Nginx:

sudo certbot --nginx -d example.com -d www.example.com

Lệnh này chạy certbot với plugin –nginx, sử dụng -d để chỉ định tên miền mà bạn muốn tạo chứng chỉ.

Nếu đây là lần đầu bạn chạy certbot, bạn sẽ được yêu cầu nhập địa chỉ email và bạn cần đồng ý với các điều khoản dịch vụ. Sau đó, certbot sẽ liên lạc với máy chủ Let’s Encrypt, và  thực hiện xác minh bạn có  kiểm soát tên miền bạn đang yêu cầu chứng chỉ hay không

Nếu thử thách đó thành công, certbot sẽ hỏi bạn cách bạn muốn cấu hình cài đặt HTTPS của mình.

Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Tiếp theo, bạn chọn của bạn rồi nhấn ENTER. Cấu hình sẽ được cập nhật và Nginx sẽ tải lại để áp dụng cài đặt mới. Certbot sẽ kết thúc với thông báo cho bạn biết quá trình thành công và nơi chứa chứng chỉ của bạn.

Sau khi, hoàn thành các bước trên bạn hãy thử tải lại trang web của bạn bằng địa chỉ https:// . Thông thường, bạn sẽ thấy biểu tượng khóa, cho thấy trang web được bảo mật đúng cách. Hoặc bạn cũng có thể kiểm tra máy chủ của mình bằng SSL Labs Server Test nhận điểm A thì bạn đã bảo mật đúng cách.

Bước 5: Kiểm tra tự động gia hạn chứng chỉ

Để kiểm tra xem chứng chỉ SSL của bạn có thể tự động gia hạn bằng Certbot hay không, bạn có thể làm theo cách này:

Chứng chỉ của Let’s Encrypt chỉ có thời hạn là 90 ngày, tuy nhiên, chúng tôi khuyến khích mọi người sử dụng cách tự động gia hạn chứng chỉ. Bằng cách cài đặt gói certbot để tự động quản lý việc này bằng cách sử dụng hẹn giờ. Tính năng hẹn giờ  sẽ chạy hai lần mỗi ngày và tự động gia hạn chứng chỉ nếu còn ít hơn 30 ngày để hết hạn.

Để xem trạng thái của hẹn giờ, bạn chỉ cần sử dụng lệnh sau:

sudo systemctl status certbot.timer

Để kiểm tra quá trình tự động gia hạn chứng chỉ, bạn có thể sử dụng lệnh sau:

sudo certbot renew --dry-run

Nếu không có lỗi xuất hiện, bạn tự động gia hạn chứng chỉ thành công. Lúc này, Certbot sẽ tự động gia hạn chứng chỉ và làm mới Nginx để áp dụng các thay đổi. Nếu quá trình gia hạn tự động thất bại, Let’s Encrypt sẽ gửi thông báo cảnh báo qua email bạn đã cung cấp, để bạn biết rằng chứng chỉ sắp hết hạn.

Nếu bạn đang cần mua chứng chỉ bảo mật ssl thì đừng bỏ qua LANIT – nhà cung cấp chứng chỉ bảo mật hàng đầu hiện nay. Để liên hệ với chúng tôi, vui lòng liên hệ theo địa chỉ sau đây:

  • Trụ sở tại: Toà Báo Công An Nhân Dân, 23 Nghiêm Xuân Yêm, Thanh Liệt, Thanh Trì, Hà Nội.
  • Hotline: 0945.96.95.94
  • Email: [email protected]
  • Website: https://lanit.com.vn/

Lời kết

Qua bài viết trên đây của LANIT, chắc hẳn bạn đã nắm được cách bảo mật máy chủ Nginx trên hệ điều hành Ubuntu 20.04 bằng cách sử dụng dịch vụ Let’s Encrypt. Bằng cách cài đặt Certbot, tải và cài đặt chứng chỉ SSL/TLS miễn phí và tự động gia hạn chúng, bạn đã đảm bảo rằng trang web của mình hoạt động an toàn với giao thức HTTPS. Nếu có bất kỳ thắc mắc nào hãy dể lại bình luận hoặc liên hệ chúng tôi ngay để được giải đáp ngay lập tức nhé!

avata Hải

Triệu Huyền Trang

Triệu Huyền Trang chuyên gia 3 năm kinh nghiệm trong ngành Công Nghệ, Phần Mềm. Chuyên chia sẻ các kiến thức phần mềm mã nguồn, ứng dụng và thông tin về công nghệ hữu ích.

Chat với chúng tôi qua Zalo!
Chat với chúng tôi qua Zalo!