Cài đặt Let's Encrypt SSL trên Debian 11 với Nginx và sử dụng Certbot

Yêu cầu trước khi cài SSL Nginx Debian 11

Để thực hiện hướng dẫn này, bạn sẽ cần:

  1. Một máy chủ Debian 11 được thiết lập bằng cách tuân thủ theo hướng dẫn thiết lập máy chủ ban đầu cho Debian 11, bao gồm một người dùng không phải là root có quyền sudo và một tường lửa.

  2. Một tên miền đã đăng ký. Hướng dẫn này sẽ sử dụng example.com. Bạn có thể đăng ký và mua tên miền tại KDATA.

  3. Cả hai bản ghi DNS sau đã được thiết lập cho máy chủ.

    • Một bản ghi A với example.com trỏ đến địa chỉ IP công cộng của máy chủ của bạn.
    • Một bản ghi A với www.example.com trỏ đến địa chỉ IP công cộng của máy chủ của bạn.
  4. Nginx đã được cài đặt. Hãy đảm bảo rằng bạn đã có một khối máy chủ cho domain của bạn. Hướng dẫn này sẽ sử dụng /etc/nginx/sites-available/example.com làm ví dụ.

Chi tiết hướng dẫn cài SSL Nginx Debian 11

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

Để sử dụng Let's Encrypt và có chứng chỉ SSL thì bước đầu tiên là cài đặt phần mềm Certbot trên máy chủ.

Sử dụng lệnh apt để cài đặt Certbot và plugin Nginx của nó:

sudo apt install certbot python3-certbot-nginx

Tuy Certbot lúc này đã sẵn sàng sử dụng nhưng bạn vẫn phải xác nhận cấu hình Nginx để Certbot có thể tự động cấu hình SSL cho Nginx.

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

Để Certbot có thể tự động cấu hình SSL, quan trọng nhất là nó cần xác định chính xác khối máy chủ trong cấu hình Nginx của bạn. Concretely, điều này được thực hiện bằng cách tìm kiếm một chỉ thị server_name phù hợp với tên miền bạn đang yêu cầu chứng chỉ.

Nếu bạn đã làm theo bước thiết lập khối máy chủ trong hướng dẫn cài đặt Nginx, bạn sẽ có một khối cấu hình máy chủ cho domain của bạn, đặt tại đường dẫn /etc/nginx/sites-available/example.com, và chắc chắn rằng chỉ thị server_name đã được cấu hình chính xác.

Để kiểm tra, mở tệp cấu hình cho domain của bạn bằng nano hoặc trình soạn thảo văn bản ưa thích của bạn:

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

Tìm kiếm dòng server_name hiện tại. Nó sẽ như thế này:

...
server_name example.com www.example.com;
...

Nếu bạn đã tìm thấy dòng này thì hãy thoát khỏi trình soạn thảo, chuẩn bị thực hiện bước tiếp theo.

Nếu không thấy, hãy cập nhật nó để phù hợp. Sau đó, lưu tệp, thoát khỏi trình soạn thảo và kiểm tra cú pháp của các chỉnh sửa cấu hình:

sudo nginx -t

Nếu bạn được nhận báo lỗi, hãy mở lại tệp khối máy chủ sau đó kiểm tra xem lỗi chính tả hoặc ký tự bị thiếu. Sau khi cú pháp của tệp cấu hình đúng, bạn bắt đầu tải lại Nginx để nạp cấu hình mới:

sudo systemctl reload nginx

Giờ đây Certbot đã có thể tìm thấy khối máy chủ và cập nhật nó tự động.

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, như được đề xuất trong các hướng dẫn chuẩn bị, bạn sẽ cần điều chỉnh cấu hình để cho phép dữ liệu HTTPS đi qua. Một điều may mắn là, khi bạn cài đặt, Nginx đã tự động đăng ký một số hồ sơ với ufw.

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

sudo ufw status

Đầu ra nó sẽ tương tự như sau, ở đây có nghĩa là chỉ có lưu lượng HTTP được phép tới 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)

Thực hiện bổ sung cho lưu lượng HTTPS, cho phép hồ sơ Nginx Full và xóa sự cho phép dư thừa của hồ sơ Nginx HTTP:

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

Trạng thái của bạn lúc này 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 — Nhận chứng chỉ SSL

Certbot cho phép bạn lựa chọn giữa nhiều phương tiện để nhận chứng chỉ SSL thông qua các plugin khác nhau. Khi sử dụng plugin Nginx, Certbot sẽ tự động thực hiện việc điều chỉnh cấu hình của Nginx và tải lại cấu hình khi cần thiết. Điều này giúp đơn giản hóa quá trình cấu hình và duy trì chứng chỉ SSL trên máy chủ của bạn.

Để sử dụng plugin này, gõ:

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 chứng chỉ hợp lệ cho.

Nếu đây là lần đầu tiên bạn khởi chạy certbot, quá trình sẽ bắt đầu với việc yêu cầu bạn nhập địa chỉ email và chấp nhận các điều khoản dịch vụ. Ngay sau đó, certbot sẽ liên lạc với máy chủ Let's Encrypt và tiến hành một thử thách để xác minh rằng bạn có quyền kiểm soát domain bạn đang yêu cầu chứng chỉ cho.

Cấu hình sẽ được cập nhật và Nginx sẽ tải lại để áp dụng các thiết lập mới. Certbot sẽ thông báo cho bạn biết quá trình đã thành công và chứng chỉ của bạn được lưu ở đâu:

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 2022-08-08. 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

Chứng chỉ của bạn đã được tải xuống, cài đặt và triển khai thành công. Hãy thử tải lại trang web của bạn bằng cách sử dụng giao thức HTTPS và theo dõi biểu tượng bảo mật trên trình duyệt. Biểu tượng này thường xuất hiện dưới dạng một hình khoá, là dấu hiệu rõ ràng của việc trang web của bạn đã được bảo mật đầy đủ. Nếu bạn kiểm tra độ an toàn của máy chủ sử dụng Công cụ Kiểm tra Máy chủ SSL Labs, bạn sẽ nhận được một điểm đánh giá cao, thường là A.

Bước 5 — Xác nhận quá trình tự động đổi mới của Certbot

Chứng chỉ của Let’s Encrypt chỉ có giá trị trong khoảng chín mươi ngày để khuyến khích việc tự động hóa quá trình đổi mới chứng chỉ. Gói certbot, mà chúng ta đã cài đặt, giải quyết vấn đề này bằng cách thêm một hẹn giờ systemd chạy hai lần mỗi ngày. Hệ thống này sẽ tự động đổi mới mọi chứng chỉ có hiệu lực trong khoảng ba mươi ngày trước khi chúng hết hạn, đảm bảo tính liên tục và bảo mật của chúng.

Bạn có thể kiểm tra trạng thái của 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 2022-08-08 19:05:35 UTC; 11s ago
Trigger: Tue 2022-08-09 07:22:51 UTC; 12h left
Triggers: ● certbot.service

Để kiểm thử quá trình đổi mới, bạn có thể thực hiện một thử nghiệm không thực tế với certbot:

sudo certbot renew --dry-run

Nếu không xuất hiện lỗi, quá trình đã hoàn thành. Certbot sẽ tự động đổi mới chứng chỉ khi cần thiết và tải lại Nginx để áp dụng các thay đổi. Trong trường hợp quá trình đổi mới tự động gặp sự cố, Let’s Encrypt sẽ thông báo cho bạn qua địa chỉ email bạn đã cung cấp, cảnh báo về sự hết hạn của chứng chỉ. Điều này giúp đảm bảo rằng trang web của bạn luôn duy trì được tính bảo mật và liên tục.

Bạn đã thực hiện việc cài đặt Let's Encrypt SSL trên hệ điều hành Debian 11, tích hợp với máy chủ web Nginx và sử dụng công cụ Certbot. Qua quá trình này, SSL trở thành một phần không thể thiếu của môi trường truyền thông web, đảm bảo rằng dữ liệu của người dùng được bảo vệ an toàn. Hãy thực hiện các bước hướng dẫn cài đặt SSL Nginx Debian 11 để đạt được một môi trường web đáng tin cậy.

Mọi người cùng tìm kiếm: letsencrypt debian nginx

Đến với Chứng chỉ SSL của KDATA. Với chúng tôi, an ninh mạng không còn là nỗi lo. Bảo vệ thông tin trực tuyến của bạn bằng cách mua Chứng chỉ SSL tại KDATA, giúp giảm thiểu rủi ro và tăng cường sự an toàn cho website của bạn. Hãy đầu tư vào sự an toàn ngay hôm nay với KDATA!

https://kdata.vn/ssl-certificate

👉 Liên hệ ngay KDATA hỗ trợ tận tình, support tối đa, giúp bạn trải nghiệm dịch vụ giá hời chất lượng tốt nhất