Hướng dẫn bảo mật Apache trên Debian 10 miễn phí với Let's Encrypt

Let's Encrypt là Tổ chức phát hành chứng chỉ (CA) cung cấp cách dễ dàng để lấy và cài đặt chứng chỉ TLS / SSL miễn phí, do đó nó cho phép HTTPS được mã hóa trên máy chủ web. Nó thực hiện đơn giản hóa quy trình bằng cách cung cấp một ứng dụng phần mềm khách,Certbot, cố gắng 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.

Hướng dẫn bảo mật Apache trên Debian 10 miễn phí với  Let's Encrypt

Hiện tại, toàn bộ quá trình lấy và cài đặt chứng chỉ hoàn toàn tự động trên cả Apache và Nginx.
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn sử dụng Certbot để lấy chứng chỉ SSL miễn phí cho Apache trên Debian 10 và thiết lập tự động gia hạn chứng chỉ của bạn.
Hướng dẫn này sẽ sử dụng tệp máy chủ ảo Apache riêng biệt thay vì tệp cấu hình mặc định. Chúng tôi khuyên bạn nên tạo tệp máy chủ ảo Apache mới cho từng miền vì nó giúp bạn tránh được các lỗi thường gặp và duy trì tệp mặc định dưới dạng cấu hình dự phòng cho máy chủ ảo của bạn.

Những điều kiện cần thiết
Để làm theo hướng dẫn này, bạn sẽ cần:

  • Một máy chủ Debian 10 được thiết lập bằng cách làm theo hướng dẫn thiết lập máy chủ ban đầu này cho Debian 10 , bao gồm người dùng không phải root có sudo đặc quyền và tường lửa.
  • Tên miền đã đăng ký đầy đủ. Hướng dẫn này sẽ sử dụng your_domain làm ví dụ xuyên suốt cả vài hướng dẫ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 các tên miền này, bạn có thể làm theo các hướng dẫn này để thêm tên miền và sau đó là các hướng dẫn tạo bản ghi DNS
    • Bản ghi A với việc 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 việc trỏ đến địa chỉ IP công cộng của máy chủ của bạn www.your_domain
  • Đã cài đặt Apache bằng cách làm theo hướng dẫn cài đặt Apache trên Debian 10. Đảm bảo rằng bạn đã thiết lập tệp máy chủ ảo cho miền của mình. Hướng dẫn này sẽ sử dụng làm ví dụ ./etc/apache2/sites-available/your_domain.conf
Bước 1 - Cài đặt Certbot
Đầu tiên, để sử dụng Let's Encrypt và lấy chứng chỉ SSL là cài đặt phần mềm Certbot trên máy chủ của bạn.
Lưu ý : Hiện tại, Certbot không có sẵn từ kho phần mềm Debian theo mặc định, nhưng bạn có thể định cấu hình buster-backportskho lưu trữ trong /etc/apt/sources.listtệp của mình để cho phép bạn cài đặt bản sao lưu của phần mềm Certbot với APT .Tuy nhiên, backport là các gói được biên dịch lại từ kho thử nghiệm của Debian và kho không ổn định đã được biên dịch lại để chạy trong bản phân phối Debian ổn định. Các gói này không được kiểm tra thường xuyên và có thể không phải lúc nào cũng được cập nhật. Theo đó, Certbot backport sẽ cài đặt phiên bản0,31 trong khi phiên bản hiện tại của bài viết này là 1,09. Một điểm khác biệt đáng chú ý giữa các phiên bản Certbot này là cài đặt mặc định cho phiên bản 0,31sẽ kích hoạt TLS v1.0 và TLS v1.1, hai giao thức bảo mật đã không được chấp nhận trong hầu hết các trình duyệt web chính và việc kích hoạt các giao thức này có thể gây ra lỗ hổng bảo mật. Mặc dù có thể thay đổi mặc định này, nhưng làm như vậy có thể phá vỡ các cập nhật tự động làm cho Certbot trở nên hữu ích.Cho đến khi có phiên bản Certbot mới hơn từ kho Debian APT, hướng dẫn này sẽ tuân theo khuyến nghị cài đặt phiên bản của tài liệu Certbot 1,09 với 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 các gói ở định dạng được gọi là snaps.
Để cài đặt Certbot dưới dạng snap trên Debian, trước tiên bạn phải cài đặt snapd trên máy chủ của mình. Snapd là một daemon cần thiết để cài đặt, sử dụng và quản lý Snaps. Cài đặt gói Snapd cũng sẽ cài đặt lệnh snap trên máy chủ của bạn. Để cài đặt snapd, hãy cập nhật thư viện trên máy chủ cục bộ của bạn nếu gần đây bạn chưa làm như vậy:
sudo apt update
Và sau đó cài đặt Snapd
sudo apt install snapd
Sau khi chạy lệnh này, bạn sẽ được nhắc xác nhận rằng bạn muốn cài đặt snapd và các gói phụ thuộc của nó. Bạn đồng ý bằng cách nhấn Y và sau đó ENTER. Tiếp theo, sử dụng lệnh snap để cài đặt coresnap. Điều này sẽ cài đặt một số phụ thuộc vào 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 snap Certbot:
sudo snap install core
Sau đó, tải lại coresnap. Làm như vậy sẽ đảm bảo rằng bạn đã cài đặt các phiên bản snapd  mới nhất và các gói phụ thuộc của nó:
sudo snap refresh core
Sau đó, bạn có thể cài đặt certbotsnap bằng lệnh sau:

Lưu ý: Snaps có thể được cài đặt theo một trong ba mức hạn chế cung cấp các mức độ cách ly khác nhau với hệ thống của bạn. Ví dụ: hầu hết các snaps được cài đặt theo --strict cấp độ hạn chế theo mặc định, ngăn các chương trình này truy cập vào các tệp hoặc mạng của hệ thống của bạn. Vì Certbot phải được phép chỉnh sửa các tệp cấu hình nhất định để thiết lập chính xác chứng chỉ, lệnh này bao gồm tùy chọn --classic . Mức giới hạn này cho phép bất kỳ snaps nào được cài đặt bên dưới nó đều có cùng quyền truy cập vào tài nguyên hệ thống như các gói truyền thống:
sudo snap install --classic certbot
Quá trình cài đặt này sẽ cài đặt certbot, tệp thực thi 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ỳ đâu trên hệ thống của mình:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Bây giờ, Certbot hiện đã sẵn sàng để sử dụng, nhưng để nó cấu hình SSL cho Apache, chúng ta cần xác minh rằng Apache đã được định cấu hình chính xác.

Bước 2 - Thiết lập chứng chỉ SSL
Certbot cần có khả năng tìm đúng máy chủ ảo trong cấu hình Apache của bạn để nó tự động định 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 ServerName được chỉ định phù hợp với tên miền mà bạn đã yêu cầu cấp chứng chỉ.
Nếu bạn đã làm theo bước thiết lập máy chủ ảo trong hướng dẫn cài đặt Apache, bạn sẽ có một VirtualHost cho miền của mình với lệnh đã được đặt thích hợp. 
/etc/apache2/sites-available/your_domain.confServerName

Để kiểm tra, hãy mở tệp máy chủ ảo cho miền của bạn bằng cách sử dụ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 có  Nó sẽ giống như thế này, với tên miền của riêng bạn thay vì your_domain:
...ServerName your_domain;...
Nếu nó chưa có, hãy cập thêm ServerName trỏ đến tên miền của bạn. Sau đó, lưu tệp và thoát khỏi trình chỉnh sửa của bạn. Nếu bạn sử dụng nano, để làm như vậy chỉ cần nhấn CTRL + X, Y và ENTER.
Tiếp theo, xác minh cú pháp  chỉnh sửa cấu hình của bạn có lỗi không:
sudo apache2ctl configtest
Nếu không có bất kỳ lỗi cú pháp nào, bạn sẽ thấy thông tin hiển thị như sau:
Output. . .Syntax OK
Nếu bạn gặp lỗi, hãy mở lại tệp máy chủ ảo và kiểm tra xem có lỗi chính tả hoặc ký tự bị thiếu nào không. Khi cú pháp của tệp cấu hình của bạn chính xác, hãy tải lại Apache để cập nhập cấu hình bạn mới chỉnh sửa:
sudo systemctl reload apache2
Certbot hiện có thể tìm thấy chính xác VirtualHost 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 thông qua tường lửa
Nếu bạn đã bật tường lửa ufw, 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 cài đặt trên Debian, ufw được đóng gói với một số cấu hình giúp đơn giản hóa quá trình thay đổi các quy tắc tường lửa cho lưu lượng HTTP và HTTPS. Bạn có thể xem cài đặt hiện tại bằng cách nhập:
sudo ufw status
Nếu bạn đã làm theo Bước 2 trong hướng dẫn của chúng tôi về Cách cài đặt Apache trên Debian 10, thông tin hiển thị của lệnh này sẽ trông giống như sau, cho thấy rằng chỉ lưu lượng HTTP được phép đến máy chủ web:
OutputStatus: activeTo                         Action      From--                         ------      ----OpenSSH                    ALLOW       Anywhere                  WWW                        ALLOW       Anywhere                  OpenSSH (v6)               ALLOW       Anywhere (v6)             WWW (v6)                   ALLOW       Anywhere (v6)
Ngoài ra, để cho phép lưu lượng truy cập HTTPS, hãy cho phép cấu hình “WWW Full” và xóa phụ cấp cấu hình “WWW” dư thừa:
sudo ufw allow 'WWW Full'sudo ufw delete allow 'WWW'
Trạng thái máy chủ của bạn bây giờ sẽ giống như sau:
sudo ufw status
OutputStatus: activeTo                         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ìm nạp chứng chỉ của bạn.

Bước 4 - Lấy chứng chỉ SSL
Certbot cung cấp nhiều cách khác nhau để lấy chứng chỉ SSL thông qua các plugin. Plugin Apache sẽ xử lý cấu hình lại Apache và tải lại cấu hình bất cứ khi nào cần thiết. Để sử dụng plugin này, hãy nhập như sau:
sudo certbot --apache -d your_domain -d www.your_domain

Nếu bạn muốn thêm ssl cho các tên miền phụ của bạn, bạn chỉ cần thêm nó vào phía sau lệnh trên với cấu trúc -d sub.your_domain
Điều này chạy certbot với --apacheplugin, sử dụng -d để chỉ định tên mà bạn muốn chứng chỉ hợp lệ.

Nếu đây là lần đầu tiên 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 bạn có sẵn sàng chia sẻ địa chỉ email của bạn với Electronic Frontier Foundation, một tổ chức phi lợi nhuận ủng hộ quyền kỹ thuật số và cũng là nhà sản xuất Certbot hay không.
Vui lòng nhập Y để chia sẻ địa chỉ email của bạn hoặc N từ chối. Sau khi làm như vậy, certbot sẽ giao tiếp với máy chủ Let's Encrypt, sau đó chạy thử thách để xác minh rằng bạn kiểm soát miền mà 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 để chọn cài đặt mới, certbot sẽ kết thúc bằng 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. . .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-01-20. 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

Chứng chỉ của bạn đã được tải xuống, cài đặt và hoàn tất. Hãy thử truy cập vào tên miền của bạn trên trình duyệt bằng cách sử dụng https:// và để ý chỉ báo bảo mật của trình duyệt. Nó phải cho biết rằng trang web được bảo mật đúng cách, thường có biểu tượng ổ khóa màu xanh lục. Nếu bạn kiểm tra máy chủ của bạn bằng cách sử dụng SSL Labs máy chủ thử nghiệm, nó sẽ nhận được một một lớp. Hãy kết thúc bằng cách thử nghiệm quá trình gia hạn.

Bước 5 - Xác minh tự động gia hạn Certbot
Chứng chỉ Let's Encrypt chỉ có giá trị trong chín mươi ngày. Điều này nhằm khuyến khích người dùng tự động hóa quy trình gia hạn chứng chỉ của họ. Các gói  certbot chúng ta cài đặt sẽ chăm sóc của điều này cho chúng ta bằng cách thêm một kịch bản mới trong /etc/cron.d. Tập lệnh này chạy hai lần một ngày và sẽ tự động gia hạn bất kỳ chứng chỉ nào trong vòng ba mươi ngày kể từ ngày hết hạn.

Để kiểm tra quá trình gia hạn, bạn có thể chạy thử với certbot:
sudo certbot renew --dry-run
Nếu bạn không thấy lỗi, bạn đã cài đặt hoàn tất và thành công với máy chủ của bạn, bây giờ tên miền của bạn đã được bảo mật miễn phí với  Let's Encrypt . Khi cần thiết, Certbot sẽ gia hạn chứng chỉ của bạn và tải lại Apache để thực hiện các thay đổi. Nếu quá trình gia hạn tự động không thành công, Let's Encrypt sẽ gửi thông báo đến 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, chúng tôi đã hướng dẫn bạn cài đặt ứng dụng Let's Encrypt certbot miễn phí, và sử dụng chứng chỉ SSL cho miền của bạn, cấu hình Apache để sử dụng các chứng chỉ này và thiết lập gia hạn chứng chỉ tự động cho tiên miền. 

Tác giả bài viết: Mr. King

Đừng quên để lại cho chúng tôi bình luận nếu bạn gặp khó khăn hoặc cần bất kỳ giúp đỡ nào. Chúng tôi sẽ trả lời tất cả những ý kiến cũng như luôn lắng nghe đóng góp của mọi người tại bình luận dưới này, điều này sẽ cần thiết cho một vài người bạn khác cũng cần được trao đổi thêm thông tin.
Cám ơn các bạn đã quan tâm và dành thời gian xem hết bài viết này của chúng tôi.

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

Click để đánh giá bài viết

  Ý kiến bạn đọc

Góc nhìn

Xem tất cả
Cách đơn giản để quản lý cảm xúc của bạn và sống hạnh phúc mỗi ngày

Cách đơn giản để quản lý cảm xúc của bạn và sống hạnh phúc mỗi ngày

Mọi người đều đã trải qua sự tức giận, buồn bã, thất vọng và thất vọng. Nếu quản lý không đúng cách, những cảm xúc tiêu cực này có thể phá vỡ mối quan...

Làm thế nào để thành công?

Làm thế nào để thành công?

Hôm nay, chúng ta tạm gác lại những chia sẻ phục vụ cho mục đích hỗ trợ kỹ thuật. Cùng nghĩ một tí xíu về thời gian đã qua và định hướng sơ bộ cho câu...

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây