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

Trong bài hướng dẫn này, bạn sẽ tạo SSL miễn phí từ Let's Encrypt trên một máy chủ Rocky Linux 8 chạy Nginx làm máy chủ web. Ngoài ra, bạn sẽ tự động hóa quá trình gia hạn chứng chỉ bằng cách sử dụng cron.

Yêu cầu tiên quyết khi muốn tạo SSL miễn phí

  1. Một máy chủ Rocky Linux 8 được thiết lập bằng cách làm theo hướng dẫn thiết lập ban đầu máy chủ Rocky Linux 8, bao gồm một người dùng không phải là root với đặc quyền sudo và một tường lửa.
  2. Nginx đã được cài đặt trên máy chủ Rocky Linux 8 với một khối máy chủ được cấu hình.
  3. Một tên miền đã được đăng ký đầy đủ. Hướng dẫn này sẽ sử dụng your_domain làm ví dụ. Nếu bạn chưa có tên miền nào hãy đăng ký mua tại KDATA ngay.
  4. Cả hai bản ghi DNS sau đã được thiết lập cho máy chủ của bạn:
    • Một bản ghi A với your_domain 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.your_domain trỏ đến địa chỉ IP công cộng của máy chủ của bạn.

Các bước hướng dẫn tạo SSL miễn phí từ Let's Encrypt

Bước 1 — Cài đặt Certbot Let's Encrypt Client

Đầu tiên, bạn cần cài đặt gói phần mềm certbot. Đăng nhập vào máy chủ Rocky Linux 8 của bạn với người dùng không phải là root:

ssh sammy@your_server_ip

Gói certbot không có sẵn thông qua quản lý gói mặc định. Bạn cần bật kho lưu trữ EPEL để cài đặt Certbot.

sudo dnf install epel-release

Khi được hỏi xác nhận cài đặt, nhập 'y' và nhấn Enter.

Bây giờ bạn đã có quyền truy cập vào kho lưu trữ thêm, hãy cài đặt tất cả các gói cần thiết:

sudo dnf install certbot python3-certbot-nginx

Điều này sẽ cài đặt Certbot và plugin Nginx cho Certbot, cần thiết để chạy chương trình.

Quá trình cài đặt sẽ hỏi bạn về việc nhập một khóa GPG. Xác nhận nó để quá trình cài đặt có thể hoàn thành.

Bây giờ bạn đã cài đặt thành công ứng dụng Let's Encrypt, nhưng trước khi nhận chứng chỉ, bạn cần đảm bảo rằng tất cả các cổng cần thiết đều mở. Để làm điều này, bạn sẽ cập nhật cài đặt tường lửa của mình trong bước tiếp theo.

Bước 2 — Cập nhật quy tắc tường lửa

Vì cài đặt tiên quyết của bạn kích hoạt firewalld, bạn sẽ cần điều chỉnh cài đặt tường lửa để cho phép kết nối từ bên ngoài vào máy chủ web Nginx của bạn.

Để kiểm tra xem dịch vụ nào đã được kích hoạt, chạy lệnh:

sudo firewall-cmd --permanent --list-all

Bạn sẽ nhận được kết quả giống như sau:

Output
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Nếu bạn không thấy http trong danh sách dịch vụ, bật nó bằng cách chạy:

sudo firewall-cmd --permanent --add-service=http

Để cho phép lưu lượng https, chạy lệnh sau:

sudo firewall-cmd --permanent --add-service=https

Để áp dụng các thay đổi, bạn cần tải lại dịch vụ tường lửa:

sudo firewall-cmd --reload

Bây giờ bạn đã mở máy chủ của mình cho lưu lượng https, bạn đã sẵn sàng chạy Certbot và lấy chứng chỉ của mình.

Bước 3 — Lấy chứng chỉ SSL

Bây giờ bạn có thể yêu cầu một chứng chỉ SSL cho tên miền của mình.

Khi tạo SSL miễn phí cho Nginx bằng ứng dụng Certbot của Let's Encrypt, ứng dụng sẽ tự động lấy và cài đặt một chứng chỉ SSL mới có hiệu lực cho các tên miền được cung cấp như là tham số.

Nếu bạn muốn cài đặt một chứng chỉ đơn có hiệu lực cho nhiều tên miền hoặc tên miền con, bạn có thể truyền chúng như là các tham số bổ sung cho lệnh. Tên miền đầu tiên trong danh sách tham số sẽ là tên miền cơ sở được Let's Encrypt sử dụng để tạo chứng chỉ, và vì vậy bạn sẽ truyền tên miền cấp cao nhất đầu tiên trong danh sách, tiếp theo là bất kỳ tên miền con hoặc tên định danh bổ sung nào:

sudo certbot --nginx -d your_domain -d www.your_domain

Lệnh này chạy certbot với plugin --nginx và tên miền cơ sở sẽ là your_domain. Để thực hiện quá trình cài đặt tương tác và lấy chứng chỉ chỉ cho một tên miền, chạy lệnh certbot với:

sudo certbot --nginx -d your_domain

Tiện ích certbot cũng có thể yêu cầu thông tin về tên miền trong quá trình yêu cầu chứng chỉ. Để sử dụng chức năng này, gọi certbot mà không có bất kỳ tên miền nào:

sudo certbot --nginx

Bạn sẽ nhận được một hướng dẫn từng bước để tùy chỉnh các tùy chọn chứng chỉ của bạn. Certbot sẽ yêu cầu bạn cung cấp địa chỉ email để khôi phục chìa khóa mất và thông báo, và đồng ý với các điều khoản sử dụng.

Nếu bạn không chỉ định các tên miền của mình trên dòng lệnh, Certbot sẽ tìm kiếm chỉ thị server_name và sẽ hiển thị danh sách các tên miền được tìm thấy. Nếu các tệp server block của bạn không chỉ định rõ ràng tên miền mà chúng phục vụ bằng cách sử dụng chỉ thị server_name, Certbot sẽ yêu cầu bạn cung cấp tên miền thủ công.

Để đảm bảo an toàn, Certbot sẽ tự động cấu hình chuyển hướng tất cả lưu lượng từ cổng 80 sang 443.

Khi quá trình cài đặt hoàn tất thành công, bạn sẽ nhận được một thông báo tương tự như sau:

OUTPUT
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2022-11-14. 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

Các tệp chứng chỉ được tạo sẽ có sẵn trong một thư mục con được đặt theo tên miền cơ sở của bạn trong thư mục /etc/letsencrypt/live.

Bây giờ bạn đã sử dụng xong Certbot, bạn có thể kiểm tra tình trạng chứng chỉ SSL của mình. Xác minh tình trạng chứng chỉ SSL bằng cách mở liên kết sau đây trong trình duyệt web ưa thích của bạn (đừng quên thay thế your_domain bằng tên miền cơ sở của bạn):

https://www.ssllabs.com/ssltest/analyze.html?d=your_domain

Trang web này chứa một bài kiểm tra SSL từ SSL Labs, sẽ bắt đầu tự động. Tính đến thời điểm viết hướng dẫn này, cài đặt mặc định sẽ đưa ra một đánh giá A.

Bây giờ bạn có thể truy cập trang web của mình bằng tiền tố https. Tuy nhiên, bạn phải định kỳ gia hạn chứng chỉ để duy trì cài đặt này hoạt động. Trong bước tiếp theo, bạn sẽ tự động hóa quá trình gia hạn này.

Bước 4 — Thiết lập tự động gia hạn

Chứng chỉ Let's Encrypt có hiệu lực trong 90 ngày, nhưng được khuyến nghị gia hạn chúng mỗi 60 ngày để có thêm một khoảng lựa chọn. Ứng dụng Certbot của Let's Encrypt có một lệnh renew mà tự động kiểm tra các chứng chỉ hiện tại và cố gắng gia hạn chúng nếu chúng còn ít hơn 30 ngày trước ngày hết hạn.

Bạn có thể kiểm thử tự động gia hạn cho các chứng chỉ của bạn bằng cách chạy lệnh này:

sudo certbot renew --dry-run

Kết quả sẽ tương tự như sau:

OUTPUT
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/your_domain.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for monitoring.pp.ua
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/your_domain/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/your_domain/fullchain.pem (success)
...

Lưu ý rằng nếu bạn đã tạo một chứng chỉ bao gồm nhiều tên miền, chỉ tên miền cơ bản sẽ hiển thị trong kết quả, nhưng quá trình gia hạn sẽ hoạt động cho tất cả các tên miền được bao gồm trong chứng chỉ này.

Một cách thực tế để đảm bảo chứng chỉ của bạn sẽ không lỗi thời là tạo một công việc cron sẽ định kỳ thực hiện lệnh gia hạn tự động cho bạn. Vì quá trình gia hạn trước hết kiểm tra ngày hết hạn và chỉ thực hiện gia hạn nếu chứng chỉ còn ít hơn 30 ngày trước khi hết hạn, nên hoàn toàn an toàn để tạo một công việc cron chạy hàng tuần, hoặc thậm chí mỗi ngày.

Chỉnh sửa crontab để tạo một công việc mới sẽ chạy gia hạn hai lần mỗi ngày. Để chỉnh sửa crontab cho người dùng root, chạy:

sudo crontab -e

Trình soạn thảo văn bản của bạn sẽ mở tệp crontab mặc định, là một tệp văn bản trống ở thời điểm này. Chuyển sang chế độ chèn bằng cách nhấn i và thêm dòng sau:

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew --quiet

Khi bạn hoàn thành, nhấn ESC để rời khỏi chế độ chèn, sau đó nhập :wq và ENTER để lưu và thoát khỏi tệp. Để tìm hiểu thêm về trình soạn thảo văn bản Vi và người kế nhiệm của nó là Vim, hãy kiểm tra hướng dẫn Cài đặt và Sử dụng Trình soạn thảo Văn bản Vim trên Máy chủ Đám mây của chúng tôi.

Điều này sẽ tạo một công việc cron mới sẽ chạy vào buổi trưa và buổi tối mỗi ngày. Lệnh python -c 'import random; import time; time.sleep(random.random() * 3600)' sẽ chọn một phút ngẫu nhiên trong giờ cho các nhiệm vụ gia hạn của bạn.

Lệnh gia hạn cho Certbot sẽ kiểm tra tất cả các chứng chỉ đã cài đặt trên hệ thống và cập nhật bất kỳ chứng chỉ nào sắp hết hạn trong vòng ba mươi ngày. --quiet bảo Certbot không đưa ra thông tin hoặc đợi đến khi người dùng nhập liệu.

Thông tin chi tiết hơn về quá trình gia hạn có thể được tìm thấy trong tài liệu Certbot.

Trong hướng dẫn này, bạn đã tạo SSL miễn phí bằng cách cài đặt ứng dụng Certbot của Let’s Encrypt, tải xuống chứng chỉ SSL cho tên miền và thiết lập tự động gia hạn chứng chỉ. Nếu bạn có bất kỳ câu hỏi nào về việc sử dụng Certbot, bạn có thể kiểm tra tài liệu chính thức của Certbot.

Đế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