Cài đặt Let's Encrypt SSL trên CentOS 8 với Apache và sử dụng Certbot
Let’s Encrypt là một Tổ chức Chứng nhận (CA) hỗ trợ việc đạt được và cài đặt chứng chỉ TLS/SSL miễn phí, từ đó kích hoạt việc sử dụng HTTPS được mã hóa trên máy chủ web. Nó đơn giản hóa quá trình này bằng cách làm việc với các khách hàng, như Certbot, để tự động hóa các bước cần thiết.
Trong hướng dẫn này, bạn sẽ sử dụng Certbot để thiết lập một chứng chỉ TLS/SSL với máy chủ web Apache trên 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 một công việc cron.
Chuẩn bị trước khi cài đặt:
Để hoàn thành hướng dẫn bảo mật Apache bằng install SSL Let's Encrypt Certbot trên CentOS 8, bạn cần:
- Một máy chủ CentOS 8 với một người dùng không phải là root được kích hoạt sudo và một tường lửa firewalld cơ bản.
- Apache được cài đặt trên máy chủ với một máy chủ ảo được cấu hình cho tên miền của bạn. Bạn có thể học cách thiết lập điều này bằng cách theo dõi hướng dẫn của chúng tôi Cài đặt Apache Web Server trên CentOS 8. Hãy chắc chắn rằng bạn đã cấu hình một máy chủ ảo cho tên miền của bạn. Hướng dẫn này sẽ sử dụng
/etc/httpd/sites-available/example.com.conf
làm ví dụ. - Bạn nên sở hữu hoặc kiểm soát tên miền đã đăng ký mà bạn muốn sử dụng chứng chỉ với. Nếu bạn chưa có tên miền đã đăng ký, bạn có thể mua một cái trên KDATA, nhận một cái miễn phí trên Freenom, hoặc sử dụng đăng ký tên miền mà bạn chọn.
- Một bản ghi DNS
A
trỏ tên miền của bạn đến địa chỉ IP công cộng của máy chủ của bạn. Bản ghi DNS A là cần thiết vì cách Let’s Encrypt xác minh rằng bạn sở hữu tên miền mà nó đang cấp chứng chỉ cho. Ví dụ, nếu bạn muốn nhận một chứng chỉ choexample.com
, tên miền đó phải giải quyết đến máy chủ của bạn để quá trình xác minh có thể hoạt động. Cài đặt của chúng ta sẽ sử dụngexample.com
vàwww.example.com
làm tên miền, cả hai đều đòi hỏi một bản ghi DNS hợp lệ. - Khi bạn đã hoàn tất tất cả các yêu cầu tiên quyết này, tiến hành cài đặt phần mềm khách Certbot.
Bước 1 - Cài đặt Certbot Let’s Encrypt Client
Để sử dụng Let’s Encrypt để nhận một chứng chỉ SSL, bạn cần cài đặt Certbot và mod_ssl
, một mô-đun Apache cung cấp hỗ trợ cho mã hóa SSLv3.
Gói certbot
không khả dụng thông qua trình quản lý gói theo mặc định. Bạn sẽ cần bật kho lưu trữ EPEL để cài đặt Certbot.
Để thêm kho lưu trữ EPEL cho CentOS 8, chạy lệnh sau:
sudo dnf install epel-release
Bây giờ bạn đã có quyền truy cập vào kho lưu trữ, hãy cài đặt tất cả các gói cần thiết:
sudo dnf install certbot python3-certbot-apache mod_ssl
Với các dịch vụ này đã được cài đặt, bạn đã sẵn sàng chạy Certbot và lấy chứng chỉ của mình.
Bước 2 — Nhận chứng chỉ
Bây giờ Certbot đã được cài đặt, bạn có thể sử dụng nó để yêu cầu một chứng chỉ SSL cho tên miền của bạn.
Việc sử dụng certbot
Let’s Encrypt client để tạo chứng chỉ SSL cho Apache trên CentOS 8 tự động hóa nhiều bước trong quá trình. Khách hà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 bạn cung cấp làm tham số.
Để thực hiện việc 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 --apache -d example.com
Điều này chạy Certbot
với plugin --apache
và chỉ định tên miền để cấu hình chứng chỉ bằng cờ -d
.
Nếu bạn muốn cài đặt một chứng chỉ duy nhất hợp lệ cho nhiều tên miền hoặc subdomain, bạn có thể chuyển chúng như các tham số bổ sung cho lệnh, đặt cờ -d
cho mỗi tên miền hoặc subdomain mới. Tên miền đầu tiên trong danh sách tham số sẽ là tên miền cơ bản được Let’s Encrypt sử dụng để tạo chứng chỉ. Vì lý do này, hãy chuyển tên miền cơ bản đầu tiên trong danh sách, tiếp theo là bất kỳ tên miền phụ hoặc tên định danh bổ sung nào:
sudo certbot --apache -d example.com -d www.example.com
Tên miền cơ bản trong ví dụ này là example.com
.
Tiện ích certbot
cũng có thể yêu cầu bạn chọn một tên miền dựa trên cấu hình Apache hiện tại của bạn. Để sử dụng chức năng này, gọi certbot
mà không có bất kỳ tên miền cụ thể nào được chỉ định:
sudo certbot --apache
Chương trình sẽ hiển thị cho bạn 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. Nó 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ề mất khóa, sau đó yêu cầu bạn đồng ý với các điều khoản dịch vụ. Nếu bạn không chỉ định các tên miền trên dòng lệnh, bạn sẽ được hỏi về điều đó. Nếu các tệp Virtual Host của bạn không chỉ định rõ tên miền mà họ phục vụ bằng cách sử dụng chỉ thị ServerName
, bạn sẽ được hỏi để chọn tệp máy chủ ảo.
Khi quá trình cài đặt hoàn tất thành công, bạn sẽ thấy 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/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-09-24. 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"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- 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ơ bản của bạn trong thư mục /etc/letsencrypt/live
.
Bây giờ khi chứng chỉ của bạn đã được tải xuống, cài đặt và tải, bạn có thể kiểm tra tình trạng chứng chỉ SSL để đảm bảo mọi thứ đều hoạt động.
Bước 3 — Kiểm thử chứng chỉ và cấu hình SSL
Ở bước này, bạn có thể đảm bảo rằng Certbot đã tạo chứng chỉ SSL của bạn đúng cách bằng cách sử dụng SSL Server Test.
Mở liên kết sau trong trình duyệt web ưa thích của bạn, thay thế example.com
bằng tên miền của bạn:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
Bạn sẽ đến trang web bắt đầu kiểm thử kết nối SSL đến máy chủ của bạn:
Khi bài kiểm thử bắt đầu chạy, có thể mất vài phút để hoàn thành. Trạng thái của bài kiểm thử sẽ được cập nhật trong trình duyệt của bạn.
Khi bài kiểm thử hoàn thành, trang sẽ hiển thị một điểm chấm cho chất lượng và bảo mật cấu hình máy chủ của bạn. Tại thời điểm viết bài này, cài đặt mặc định sẽ đạt điểm A
:
Để biết thêm thông tin về cách SSL Labs xác định các điểm này, hãy xem bài viết về Cấp đánh giá SSL Labs nói về các cập nhật được thực hiện đối với hệ thống đánh giá vào tháng 1 năm 2018.
Hãy thử tải lại trang web của bạn bằng cách sử dụng https://
và lưu ý chỉ bảo mật của trình duyệt. Bây giờ nó sẽ chỉ ra rằng trang web được bảo mật đúng cách, thường là với biểu tượng khóa màu xanh lá cây.
Với chứng chỉ SSL của bạn đã được cài đặt và xác minh, bước tiếp theo là thiết lập tự động gia hạn chứng chỉ để duy trì tính hợp lệ của chứng chỉ của bạn.
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 khuyến nghị kiểm tra gia hạn hai lần mỗi ngày để tránh trường hợp thu hồi chứng chỉ hoặc sự cố khác. Vì vậy, việc tự động hóa quy trình này là một thực hành tốt.
Trước tiên, hãy xem xét lệnh bạn sẽ sử dụng để gia hạn chứng chỉ. Khách hàng Certbot
Let’s Encrypt có một lệnh renew
tự động kiểm tra các chứng chỉ đã được cài đặt và thử gia hạn chúng nếu chúng có hiệu lực trong vòng 30 ngày kể từ ngày hết hạn. Bằng cách sử dụng tùy chọn --dry-run
, bạn có thể chạy mô phỏng công việc này để kiểm tra cách gia hạn hoạt động:
sudo certbot renew --dry-run
Đầu ra sẽ trông giống như sau:
Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator apache, Installer apache
Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for example.com
http-01 challenge for www.example.com
Waiting for verification...
Cleaning up challenges
Resetting dropped connection: acme-staging-v02.api.letsencrypt.org
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live/example.com/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/example.com/fullchain.pem (success)
Lưu ý rằng nếu bạn đã tạo một chứng chỉ gói gọn với nhiều tên miền, chỉ tên miền cơ bản sẽ được hiển thị trong đầu ra, nhưng quá trình gia hạn sẽ có hiệu lực 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 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.
Tài liệu chính thức của Certbot đề xuất chạy cron
hai lần mỗi ngày. Điều này sẽ đảm bảo rằng, trong trường hợp Let’s Encrypt khởi động thu hồi chứng chỉ, sẽ không có quá nửa ngày trước khi Certbot gia hạn chứng chỉ của bạn. Tài liệu đề xuất sử dụng lệnh sau để thêm một công việc cron
phù hợp vào tệp crontab /etc/crontab
:
echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
Điều này sẽ tạo một công việc cron mới sẽ thực hiện vào buổi trưa và buổi tối mỗi ngày (0 0,12 * * *
). Sau đó, nó sẽ chạy đoạn mã ngắn python3
, dừng một khoảng thời gian ngẫu nhiên từ không đến sáu mươi phút. Điều này được khuyến nghị để giảm tải cho máy chủ của Let’s Encrypt.
Sau khi đoạn mã python kết thúc, lệnh gia hạn chứng chỉ sẽ chạy.
Đối với thêm thông tin về cách tạo và lên lịch công việc cron, bạn có thể kiểm tra hướng dẫn sử dụng Cron để tự động hóa công việc trên CentOS 8 của chúng tôi. 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.
Kết luận
Trong hướng dẫn này, bạn đã bảo mật Apache bằng cài đặt Certbot client của Let’s Encrypt trên CentOS 8, tải xuống chứng chỉ SSL cho tên miền của bạn và thiết lập gia hạn chứng chỉ tự động. 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. Chúng tôi cũng khuyến nghị bạn kiểm tra blog chính thức của Let’s Encrypt để cập nhật thông tin quan trọng theo thời gian.
Mọi người cũng tìm kiếm: dnf install certbot, certbot certonly --apache, centos 8 letsencrypt, certbot centos 9, letsencrypt centos, let's encrypt centos 8.
Đế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