Trong bài viết này, Vietnix sẽ hướng dẫn cách cài đặt, cấu hình và kích hoạt SSL/TLS để bảo mật Nginx với Let’s Encrypt trên Ubuntu 20.04 để bảo mật cho website của bạn. Với Let’s Encrypt, bạn có thể sử dụng chứng chỉ SSL miễn phí để bảo vệ thông tin cá nhân và dữ liệu trên website một cách hiệu quả và đáng tin cậy.
Giới thiệu về Let’s Encrypt
Let’s Encrypt là một dịch vụ (CA) cung cấp và hỗ trợ cài đặt chứng chỉ TLS/SSL một cách dễ dàng, miễn phí. Từ đó kích hoạt mã hoá HTTPS trên các máy chủ web. Nó đơn giản hoá quy trình bằng cách cung cấp ứng dụng khách hàng Certbot và tự động hoá hầu hết các bước cài đặt cần thiết. Vì vậy, toàn bộ quá trình lấy và cài đặt chứng chỉ hoàn toàn tự động trên cả Apache và Nginx.
Trong bài hướng dẫn này, Vietnix sẽ giúp bạn sử dụng Certbot để lấy chứng chỉ SSL miễn phí cho Nginx trên Ubuntu 20.04 cũng như thiết lập tự động gia hạn cho nó.
Bài hướng dẫn sẽ sử dụng tệp cấu hình máy chủ Nginx riêng, thay vì sử dụng tệp mặc định. Theo đó, bạn nên tạo tệp các server block cho từng tên miền vì nó giúp tránh các lỗi phổ biến và duy trì tệp mặc định dưới dạng cấu hình dự phòng.
Yêu cầu để bảo mật Nginx với Let’s Encrypt trên Ubuntu 20.04
- Một máy chủ Ubuntu 20.04 đã được thiết lập sudo-enabled, tài khoản user non-root và một tường lửa.
- Một tên miền đã được đăng kí, trong bài hướng dẫn này, Vietnix sử dụng example.com. Bạn có thể mua một tên miền từ Vietnix.
- Hai bản ghi DNS được thiết lập sẵn cho máy chủ của bạn, vui lòng xem tài liệu dưới để biết thêm cách thêm chúng.
- Một bản ghi với example.com trỏ tới địa chỉ IP công cộng của máy chủ.
- Một bản ghi với www.example.com trỏ tới địa chỉ IP công cộng của máy chủ.
- Nginx đã được cài đặt sẵn. Hãy đảm bảo rằng bạn có server block cho miền của bạn. Hướng dẫn này sẽ sử dụng /etc/nginx/sites-available/example.com làm ví dụ.
Để bảo mật Nginx với Let’sEncrypt, bạn cần có một máy chủ cài đặt hệ điều hành Ubuntu 20.04. Nếu chưa có máy chủ hoặc muốn nâng cấp máy chủ, bạn có thể tham khảo các gói VPS tại Vietnix.
Vietnix hiện đang cung cấp nhiều gói dịch vụ máy chủ ảo (VPS) có cấu hình đa dạng, chi phí hợp lý như VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS GPU và VPS NVMe. Một số ưu điểm của VPS Vietnix phải kể đến như:
- Tốc độ cao, ổn định.
- Hỗ trợ backup tự động hàng tuần.
- Hỗ trợ nhiều hệ điều hành, bao gồm Ubuntu 20.04.
- Kích hoạt chỉ trong 5 phút, quản trị đơn giản.
- Tặng theme & plugin WordPress trị giá đến 26.000.000 VND.
Nhanh tay đăng ký ngay hôm nay!
Bước 1: Cài đặt Certbot
Bước đầu tiên để sử dụng Let’s Encrypt lấy chứng chỉ SSL là cài đặt phần mềm Certbot trên máy chủ của bạn.
Cài đặt Certbot và plugin của Nginx với apt:
sudo apt install certbot python3-certbot-nginx
Khi hoàn tất, Certbot đã sẵn sàng để sử dụng, nhưng để nó tự động cấu hình SSL cho Nginx, ta cần phải thiết lập một số chi tiết trong cài đặt.
Bước 2: Xác nhận cấu hình của Nginx
Để Certbot có thể tự động cấu hình SSL, nó cần tìm đúng server block trong cấu hình Nginx của bạn. Cụ thể, điều này được thực hiện bằng cách tìm kiếm chỉ thị server_name khớp với tên miền bạn yêu cầu chứng chỉ.
Nếu bạn đã làm theo các bước thiết lập server block trong hướng dẫn cài đặt Nginx của Vietnix, bạn cũng nên có một server block cho tên miền của mình tại /etc/nginx/sites-available/example.com với chỉ thị server_name đã được thiết lập một cách phù hợp.
Để kiểm tra lại, mở tệp cấu hình của tên miền bằng nano:
sudo apt insudo nano /etc/nginx/sites-available/example.comtall certbot python3-certbot-nginx
Tìm đến dòng server_name. Nó sẽ có dạng như sau:
... server_name example.com www.example.com; ...
Nếu nó không xuất hiện, hãy cập nhật và chỉnh sửa lại thiết lập ở các bước trên. Sau đó lưu và thoát trình chỉnh sửa.
Bây giờ hãy xác minh cú pháp chỉnh sửa cấu hình của bạn:
sudo nginx -t
Nếu bạn gặp lỗi, hãy mở lại tệp server block và kiểm tra lỗi chính tả hoặc ký tự bị thiếu. Nếu tất cả đã chỉnh xác, hãy tải lại Nginx để tải cấu hình mới:
sudo systemctl reload nginx
Bây giờ, Certbot đã có thể tìm thấy chính xác server block và cập nhật nó tự động. Tiếp theo hãy cập nhật tường lửa, cho phép lưu thông HTTPS.
Bước 3: Cho phép HTTPS lưu thông qua tường lửa
Nếu bạn đã kích hoạt tường lửa ufw, Vietnix khuyến khích bạn nên điều chỉnh một số cài đặt để cho phép lưu thông HTTPS. Tuy nhiên, Nginx đã đăng ký sẵn một vài cấu hình với ufw khi cài đặt.
Bạn có thể thấy cấu hình hiện tại bằng cách:
Sudo ufw status
Nó sẽ hiện thị như bên dưới, điều đó có nghĩa chỉ duy nhất HTTP được cấp phép lưu thông đến 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)
Để cấp phép lưu thông HTTPS, hãy cho phép Nginx Full profile và xoá những Nginx HTTP profile dư thừa.
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
Trạng thái sẽ hiện thị ra như bên dưới:
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ây giờ, hãy chạy Certbot và lấy chứng chỉ cần thiết.
Bước 4: Lấy chứng chỉ SSL
Certbot cung cấp nhiều cách để thu được chứng chỉ SSL thông qua các plugin. Plugin Nginx sẽ đảm nhiệm việc cấu hình lại Nginx và tải lại chúng khi cần thiết. Để sử dụng plugin này, gõ lệnh sau đây:
sudo certbot --nginx -d example.com -d www.example.com
Câu lệnh trên sẽ chạy certbot với plugin –nginx, sử dụng -d để chỉ định tên miền mà chúng ta muốn áp dụng chứng chỉ.
Vì đây là lần đầu tiên chạy certbot, nên bạn sẽ được yêu cầu nhập địa chỉ email và đồng ý với các điều khoản dịch vụ. Sau khi làm điều này, certbot sẽ giao tiếp với máy chủ Let’s Encrypt, sau đó xác minh chính xác rằng bạn kiểm soát tên miền mà bạn yêu cầu chứng chỉ.
Nếu như thành công, Certbot sẽ hỏi bạn có muốn chỉnh sửa cấu hình HTTPS hay không.
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):
Chọn quyết định của bạn và ấn Enter. Tệp cấu hình sẽ được cập nhật, Nginx sẽ reload để áp dụng cài đặt mới. Lúc này Certbot sẽ kết thúc bằng một thông báo rằng chương trình đã thành công và hiển thị nơi lưu trữ chứng chỉ của bạn:
Output
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Đến đây, chứng chỉ của bạn đã được tải xuống, hãy thử tải lại trang web bằng https:// và chú ý đến báo cáo bảo mật của trình duyệt. Nếu có biểu tượng khoá, điều đó có nghĩa rằng trang web đang được bảo mật đúng cách. Hoặc nếu sử dụng SSL Labs Server Test, máy chủ web sẽ đạt điểm A.
Bước 5: Xác minh tự động gia hạn Certbot
Chứng chỉ của Let’s Encrypt chỉ có hiệu lực trong 90 ngày. Điều này nhằm khuyến khích người dùng tự động hoá quy trình gia hạn chứng chỉ của họ. Gói Certbot mà chúng ta đã cài đặt sẽ giúp giải quyết vấn đề này bằng cách thêm bộ hẹn giờ systemd, nó sẽ chạy hai lần một ngày và tự động gia hạn bất kỳ chứng chỉ nào trong vòng 30 ngày kể từ khi hết hạn.
Bạn có thể truy vấn trạng thái bộ hẹn giờ bằng systemctl:
sudo systemctl status certbot.timer
Output
● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service
Để kiểm tra lại, bạn có thể chạy thử với certbot
sudo certbot renew --dry-run
Nếu không gặp bất cứ lỗi nào, đồng nghĩa với bạn đã hoàn tất. Khi cần thiết, Certbot sẽ gia hạn chứng chỉ và tải lại Nginx để áp dụng các thay đổi. Nếu quá trình gia hạn tự động bị lỗi, Let’s Encrypt sẽ gửi thông báo đến địa chỉ email bạn đã chỉ định, cảnh báo rằng chứng chỉ của bạn sắp hết hạn.
Vietnix với hơn 11 năm hoạt động đã đồng hành với hơn 50.000 khách hàng cá nhân và doanh nghiệp. Đến năm 2022 Vietnix vinh dự được nhận giải Thương hiệu Việt Nam xuất sắc. Đồng thời, với tỷ lệ 97% khách hàng sau khi sử dụng dịch vụ tại Vietnix đã giới thiệu đến bạn bè, đồng nghiệp cũng là một minh chứng cho chất lượng dịch vụ luôn đáp ứng được mọi nhu cầu của khách hàng.
Nhanh tay đăng ký Vietnix VPS ngay và trải nghiệm dịch vụ ổn định, tốc độ cao, hỗ trợ nhanh chóng với nhiều ưu đãi hấp dẫn nhất.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
Lời kết
Trong hướng dẫn về cách bảo mật Nginx với Let’s Encrypt trên Ubuntu 20.04 này, bạn đã cài đặt client Certbot của Let’s Encrypt, tải xuống chứng chỉ SSL cho tên miền, cấu hình Nginx để sử dụng các chứng chỉ này và thiết lập tự động gia hạn chứng chỉ. Nếu bạn có câu hỏi thêm về việc sử dụng Certbot, hãy để lại bình luận bên dưới Vietnix sẽ giúp bạn giải đáp những thắc mắc.