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