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é!