Cài đặt Let's Encrypt SSL trên CentOS 8 với Nginx và sử dụng Certbot
Let's Encrypt là một tổ chức cung cấp chứng chỉ miễn phí cho mã hóa Transport Layer Security (TLS). Họ đơn giản hóa quá trình tạo, xác nhận, ký, cài đặt và gia hạn chứng chỉ bằng cách cung cấp một ứng dụng client phần mềm - Certbot. Trong hướng dẫn này, bạn sẽ thiết lập, install SSL Nginx CentOS 8. 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 job.
Yêu cầu trước khi bắt đầu install SSL Nginx CentOS 8
- Một máy chủ CentOS 8 đã được thiết lập theo hướng dẫn Initial Server Setup, bao gồm một người dùng không phải root có đặc quyền sudo và tường lửa.
- Nginx đã được cài đặt trên máy chủ CentOS 8 với một khối máy chủ đã được cấu hình. Bạn có thể học cách thiết lập bằng cách theo dõi hướng dẫn How To Install Nginx on CentOS 8.
- Một tên miền đã được đăng ký đầy đủ. Hướng dẫn sẽ sử dụng your_domain làm ví dụ. Bạn có thể mua một tên miền trên Namecheap, nhận miễn phí trên Freenom hoặc sử dụng bất kỳ đơn vị đăng ký tên miền nào bạn chọn.
- Cả hai bản ghi DNS sau đã được thiết lập cho máy chủ của bạn.
Hướng dẫn từng bước install SSL Nginx CentOS 8
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ủ CentOS 8 của bạn với người dùng không phải root:
ssh sammy@your_server_ip
Gói certbot không có sẵn thông qua trình 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 đã truy cập kho lưu trữ bổ sung, 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 tất.
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 đã được mở. Để làm điều này, bạn sẽ cập nhật cài đặt tường lửa ở 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 ngoại vi trên 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:
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ụ, hãy kích hoạ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 sẽ cần làm mớ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 — Nhận chứng chỉ
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 Chứng chỉ SSL cho Nginx bằng ứng dụng Certbot Let’s Encrypt, ứng dụng sẽ tự động nhận 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 dưới dạng tham số.
Nếu bạn muốn cài đặt một chứng chỉ duy nhất có hiệu lực cho nhiều tên miền hoặc phụ tên miền, 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ì lý do đó, 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ỳ phụ tên miền hoặc tên định danh bổ sung nào:
sudo certbot --nginx -d your_domain -d www.your_domain
Điều này chạy certbot với plugin --nginx, và tên miền cơ sở sẽ là your_domain. Để thực hiện cài đặt tương tác và nhận chứng chỉ chỉ cho một tên miền duy nhất, hãy 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 tên miền từ bạ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 hướng dẫn từng bước để tùy chỉnh các tùy chọn chứng chỉ của mình. Certbot sẽ yêu cầu bạn cung cấp một địa chỉ email để khôi phục khóa 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 tên miền trên dòng lệnh, Certbot sẽ tìm kiếm một chỉ thị server_name và sẽ hiển thị danh sách tên miền được tìm thấy. Nếu các tệp server block không chỉ định rõ tên miền mà họ 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 một cách thủ công.
Đối với tính bảo mật tốt hơn, Certbot sẽ tự động cấu hình chuyển hướng tất cả lưu lượng trên cổng 80 đến cổng 443.
Khi quá trình cài đặt thành công, bạn sẽ nhận được một thông báo tương tự như sau:
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 2021-02-26. 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 đã hoàn thành việc sử dụng Certbot, bạn có thể kiểm tra trạng thái chứng chỉ SSL của mình. Kiểm tra trạng thái chứng chỉ SSL của bạn bằng cách mở liên kết sau 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 bài này, cài đặt mặc định sẽ đạt được mức đá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 gia hạn chứng chỉ định kỳ để duy trì thiết lập này hoạt động. Trong bước tiếp theo, bạn sẽ tự động hóa quá trình gia hạn.
Bước 4 — Thiết lập tự động gia hạn
Chứng chỉ của Let’s Encrypt có hiệu lực trong 90 ngày, nhưng nên gia hạn chúng mỗi 60 ngày để có sự dự trữ. Ứng dụng Certbot Let’s Encrypt có một lệnh gia hạn tự động tự động kiểm tra chứng chỉ hiện đang cài đặt và thử 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 tra gia hạn tự động cho chứng chỉ của mình 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)
...
Chú ý rằng nếu bạn tạo một chứng chỉ được gói kèm với 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 đổi mới 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 tự động đổi mới cho bạn. Vì quá trình đổi mới trước tiên kiểm tra ngày hết hạn và chỉ thực hiện đổi mới nếu chứng chỉ còn ít hơn 30 ngày trước khi hết hạn, nên an toàn để tạo một công việc cron chạy hàng tuần, hoặc thậm chí hàng ngày.
Chỉnh sửa crontab để tạo một công việc mới sẽ chạy đổi mới 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 chỉnh sửa 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 để thoát khỏi chế độ chèn, sau đó gõ :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ủa chúng tôi về 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.
Đ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à nửa đêm mỗi ngày. 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ụ đổi mới của bạn.
Lệnh đổi mới cho Certbot sẽ kiểm tra tất cả các chứng chỉ đã được cài đặt trên hệ thống và cập nhật bất kỳ chứng chỉ nào đang được đặt để hết hạn trong vòng ba mươi ngày. --quiet bảo Certbot không xuất 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 đổi mới có thể được tìm thấy trong tài liệu của Certbot.
Trong hướng dẫn này, bạn đã install SSL Nginx CentOS 8. 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. Bạn cũng có thể kiểm tra blog chính thức của Let's Encrypt để cập nhật thông tin quan trọng.
Đế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