Cài đặt Let's Encrypt SSL trên Debian 11 với Apache và sử dụng Certbot
Let’s Encrypt là một Tổ chức Cấp chứng chỉ (CA) cung cấp cách để có được và cài đặt chứng chỉ TLS/SSL miễn phí, từ đó kích hoạt việc mã hóa HTTPS trên máy chủ web. Nó đơn giản hóa quá trình bằng cách cung cấp một ứng dụng khách (client) là Certbot, giúp tự động hóa hầu hết (nếu không phải tất cả) các bước cần thiết. Hiện tại, quá trình đầy đủ của việc có và cài đặt một chứng chỉ đã được tự động hóa hoàn toàn trên cả Apache và Nginx.
Trong hướng dẫn này, bạn sẽ sử dụng Certbot để có được một chứng chỉ SSL miễn phí cho Apache trên Debian 11 và cài đặt chứng chỉ để tự động gia hạn.
Chuẩn bị trước khi cài đặt
Để thực hiện hướng dẫn bảo mật Apache bằng install SSL Let's Encrypt Certbot trên Debian 11, bạn cần:
- Một máy chủ Debian 11 được thiết lập bằng cách tuân 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ó đặc quyền sudo và một tường lửa.
- 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ụ. Bạn có thể mua tên miền trên KDATA, nhận một miễn phí trên Freenom hoặc sử dụng đăng ký tên miền mà bạn chọn.
- Cả hai bản ghi DNS sau đã được thiết lập cho máy chủ của bạn. Để thiết lập chúng, bạn có thể làm theo các hướng dẫn để thêm tên miền và sau đó tạo các bản ghi DNS.
- 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. - 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. - Apache đã được cài đặt bằng cách tuân theo Hướng dẫn Cài đặt Apache trên Debian 11. Hãy chắc chắn bạn đã cấu hình một tập tin ảo (virtual host) cho tên miền của bạn. Hướng dẫn này sẽ sử dụng
/etc/apache2/sites-available/your_domain.conf
làm ví dụ.
Bước 1 - Cài đặt Certbot
Bước đầu tiên để sử dụng Let’s Encrypt để có được chứng chỉ SSL là cài đặt phần mềm Certbot trên máy chủ của bạn.
Lưu ý: Hướng dẫn này tuân theo đề xuất của tài liệu Certbot về cách cài đặt phần mềm trên Debian bằng cách sử dụng snappy, một trình quản lý gói được phát triển cho các hệ thống Linux cài đặt gói trong một định dạng được gọi là snap. Bạn có thể cài đặt Certbot từ kho lưu trữ Debian mặc định bằng apt
, nhưng điều này sẽ cài đặt một phiên bản cũ hơn (phiên bản 1.12.0) so với Certbot snap (phiên bản 1.29.0, là phiên bản mới nhất tính đến thời điểm viết bài này).
Để cài đặt snapd, hãy cập nhật chỉ mục gói cục bộ nếu bạn chưa làm điều đó gần đây:
sudo apt update
Sau đó cài đặt gói snapd:
sudo apt install snapd
Sau khi chạy lệnh này, sẽ có một thông báo để xác nhận rằng bạn muốn cài đặt snapd
và các phụ thuộc của nó. Bạn có thể đồng ý bằng cách nhấn Y
và sau đó nhấn ENTER
.
Tiếp theo, sử dụng lệnh snap để cài đặt snap core
. Điều này sẽ cài đặt một số phụ thuộc trên máy chủ của bạn cần thiết cho bất kỳ snap nào bạn cài đặt, bao gồm cả snap Certbot:
sudo snap install core
Sau đó làm mới snap core
. Điều này sẽ đảm bảo rằng bạn có phiên bản mới nhất của snapd
và các phụ thuộc của nó đã được cài đặt:
sudo snap refresh core
Lưu ý rằng snap có thể được cài đặt dưới một trong ba cấp độ confinement cung cấp các mức độ cô lập khác nhau từ hệ thống của bạn. Ví dụ, hầu hết các snap được cài đặt dưới cấp confinement --strict
mặc định, ngăn chúng truy cập vào tệp tin hoặc mạng của hệ thống của bạn. Vì Certbot phải được phép chỉnh sửa một số tệp cấu hình cụ thể để thiết lập chứng chỉ đúng cách, lệnh này bao gồm tùy chọn --classic.
Mức confinement này cho phép mọi snap được cài đặt dưới nó truy cập vào tài nguyên hệ thống giống như các gói truyền thống.
Với điều này trong tâm trí, bạn có thể cài đặt snap Certbot với lệnh sau.
sudo snap install --classic certbot
Quá trình cài đặt này sẽ cài đặt tệp thực thi certbot trong thư mục /snap/bin/. Tạo một liên kết tượng trưng đến tệp này trong thư mục /usr/bin/ để đảm bảo rằng bạn có thể chạy lệnh certbot ở bất kỳ nơi nào trên hệ thống của bạn:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbot bây giờ đã sẵn sàng sử dụng, nhưng để nó cấu hình SSL cho Apache, bạn cần xác minh rằng Apache đã được cấu hình đúng.
Bước 2 - Cài đặt chứng chỉ SSL
Certbot cần có khả năng tìm thấy tập tin ảo đúng trong cấu hình Apache của bạn để tự động cấu hình SSL. Cụ thể, nó thực hiện điều này bằng cách tìm kiếm một chỉ thị ServerName
phù hợp với tên miền bạn yêu cầu một chứng chỉ.
Nếu bạn đã tuân theo bước cài đặt tập tin ảo trong hướng dẫn cài đặt Apache, bạn nên có một khối VirtualHost
cho tên miền của bạn tại /etc/apache2/sites-available/your_domain.conf
với chỉ thị ServerName
đã được đặt đúng.
Để kiểm tra, hãy mở tập tin ảo cho tên miền của bạn bằng nano
hoặc trình soạn thảo văn bản yêu thích của bạn:
sudo nano /etc/apache2/sites-available/your_domain.conf
Tìm dòng ServerName
hiện tại. Nó nên giống như sau, với tên miền của bạn thay vì your_domain
:
ServerName your_domain
Nếu chưa có, hãy cập nhật chỉ thị ServerName
để trỏ đến tên miền của bạn. Sau đó lưu tập tin và thoát khỏi trình soạn thảo của bạn. Nếu bạn sử dụng nano
, làm như vậy bằng cách nhấn CTRL + X
, Y
, sau đó nhấn ENTER
.
Tiếp theo, xác minh cú pháp của các chỉnh sửa cấu hình của bạn:
sudo apache2ctl configtest
Nếu không có lỗi cú pháp, đầu ra của bạn sẽ trả về thông báo sau:
Output
Syntax OK
Nếu bạn nhận được một lỗi, hãy mở lại tập tin ảo và kiểm tra xem có chính tả hoặc ký tự thiếu không. Khi tệp cấu hình của bạn đã đúng cú pháp, làm mới Apache để tải cấu hình mới:
sudo systemctl reload apache2
Certbot giờ có thể tìm thấy khối VirtualHost
đúng và cập nhật nó.
Tiếp theo, hãy cập nhật tường lửa để cho phép lưu lượng HTTPS.
Bước 3 - Cho phép HTTPS qua tường lửa
Nếu bạn đã kích hoạt tường lửa ufw
, như được khuyến khích trong hướng dẫn tiên quyết, bạn cần điều chỉnh cài đặt để cho phép lưu lượng HTTPS. May mắn thay, khi cài đặt trên Debian, ufw
đi kèm với một số hồ sơ giúp quá trình thay đổi quy tắc tường lửa cho lưu lượng HTTP và HTTPS.
Bạn có thể xác minh cài đặt hiện tại bằng cách chạy:
sudo ufw status
Nếu bạn đã tuân theo Bước 2 của hướng dẫn của chúng tôi về Cách Cài đặt Apache trên Debian 11, đầu ra của lệnh này sẽ như sau, chỉ ra rằng chỉ có lưu lượng HTTP được phép truy cập vào máy chủ web:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW (v6) ALLOW Anywhere (v6)
Để cho phép lưu lượng HTTPS, hãy cho phép hồ sơ "WWW Full" và xóa quy tắc cho phép "WWW" dư thừa:
sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'
Trạng thái của bạn bây giờ sẽ như sau:
sudo ufw status
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW Full (v6) ALLOW Anywhere (v6)
Tiếp theo, hãy chạy Certbot và tải chứng chỉ của chúng tôi.
Bước 4 - Lấy chứng chỉ SSL
Certbot cung cấp nhiều cách để có được chứng chỉ SSL thông qua các plugin. Plugin Apache sẽ đảm nhận việc cấu hình lại Apache và tải lại cấu hình khi cần thiết. Để sử dụng plugin này, hãy chạy lệnh sau:
sudo certbot --apache -d your_domain -d www.your_domain
Lệnh này chạy certbot
với plugin --apache
, sử dụng -d
để chỉ định tên cho các domain mà bạn muốn chứng chỉ có hiệu lực.
Nếu đây là lần đầu bạn chạy certbot, bạn sẽ được nhắc nhập địa chỉ email và đồng ý với các điều khoản dịch vụ. Ngoài ra, nó sẽ hỏi xem bạn có sẵn lòng chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, một tổ chức phi lợi nhuận chủ trì cho quyền số và cũng là nhà sản xuất của Certbot không. Hãy nhập Y
để chia sẻ địa chỉ email của bạn hoặc N
để từ chối.
Sau khi làm điều này, certbot
sẽ giao tiếp với máy chủ Let’s Encrypt, sau đó chạy một thách thức để xác minh rằng bạn kiểm soát tên miền bạn đang yêu cầu chứng chỉ.
Nếu thành công, cấu hình sẽ được cập nhật tự động và Apache sẽ tải lại để áp dụng các cài đặt mới. certbot sẽ kết thúc với một thông báo cho bạn biết quá trình đã thành công và nơi lưu trữ chứng chỉ của bạn:
Output
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-10-31.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf
Successfully deployed certificate for www.your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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à tải lên. Hãy thử làm mới trang web của bạn bằng cách sử dụng https://
và chú ý vào chỉ số an ninh của trình duyệt của bạn. Nó nên chỉ ra rằng trang web được bảo vệ đúng cách, thường là với biểu tượng khóa màu xanh. Nếu bạn kiểm tra máy chủ của mình bằng SSL Labs Server Test, nó sẽ đạt được điểm A.
Hãy kết thúc quá trình bảo mật Apache bằng install SSL Let's Encrypt Certbot trên Debian 11 bằng cách kiểm tra quá trình gia hạn tự động.
Bước 5 - Xác minh tự động gia hạn của Certbot
Chứng chỉ Let’s Encrypt chỉ có hiệu lực trong vòng 90 ngày. Điều này nhằm khuyến khích người dùng tự động hóa quá trình gia hạn chứng chỉ của họ. Gói certbot
bạn đã cài đặt sẽ lo chúng tôi điều này bằng cách thêm một kịch bản gia hạn vào /etc/cron.d
. Kịch bản này chạy hai lần mỗi ngày và sẽ tự động gia hạn bất kỳ chứng chỉ nào còn lại trong vòng ba mươi ngày trước khi hết hạn.
Để kiểm tra quá trình gia hạn, bạn có thể thực hiện một thử nghiệm không thực với certbot
:
sudo certbot renew --dry-run
Nếu bạn không nhận được lỗi, bạn đã hoàn tất. Khi cần thiết, Certbot sẽ gia hạn chứng chỉ của bạn và tải lại Apache để áp dụng các thay đổi. Nếu quá trình gia hạn tự động bao giờ gặp sự cố, Let’s Encrypt sẽ gửi một thông báo đến địa chỉ email bạn chỉ định, cảnh báo bạn khi chứng chỉ của bạn sắp hết hạn.
Kết luận
Trong hướng dẫn này, bạn đã cài đặt client Let’s Encrypt - certbot, tải xuống chứng chỉ SSL cho tên miền của bạn, cấu hình Apache trên Debian 11 để sử dụng chứng chỉ này và thiết lập tự động gia hạn chứng chỉ. Nếu bạn có thêm câu hỏi về cách sử dụng Certbot, tài liệu của họ là nơi tốt để bắt đầu.
Đế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