VPS
Hosting
Email
Máy chủ
Firewall Anti DDoS
Tên Miền
SSL
5
4

Hướng dẫn cách bảo mật Apache bằng Let’s Encrypt trên Ubuntu 20.04

12
Lượt xem
Home System Hướng dẫn cách bảo mật Apache bằng Let’s Encrypt trên Ubuntu 20.04

Let’s Encrypt là một trong những nhà cung cấp chứng chỉ số phổ biến nhất hiện nay, cung cấp phần mềm Certbot cho phép tự động hóa hầu hết mọi quá trình thiết lập chứng chỉ. Bài viết này sẽ hướng dẫn chi tiết cách bảo mật Apache bằng Let’s Encrypt trên Ubuntu 20.04.

Điều kiện tiên quyết

Let’s Encrypt hỗ trợ các quá trình yêu cầu và cài đặt chứng chỉ TLS/SSL nhanh chóng, đồng thời còn đi kèm một client certbot để tự động hóa các quá trình cài đặt chứng chỉ trên ApacheNginx.

Bài viết này sẽ sử dụng một file virtual host riêng biệt để thiết lập website cần được bảo vệ bởi Let’s Encrypt. Vietnix khuyên bạn nên tạo file virtual host Apache mới cho từng domain được host trên server để tránh ảnh hưởng và dẫn đến lỗi trên file cấu hình mặc định.

Để làm theo các bước bên dưới, bạn đọc cần đảm bảo đáp ứng được các yêu cầu sau:

  • Có server Ubuntu 20.04 với một user non-root có quyền sudo, đồng thời đã cài sẵn tường lửa trên server.
  • Có tên miền được đăng ký sử dụng, bài viết này sẽ ví dụ tên miền này là vietnixtest.com. Nếu chưa có tên miền, bạn hãy liên hệ với Vietnix để được tư vấn và đăng ký tên miền phù hợp.
  • Có một bản ghi DNS A với vietnixtest.com trỏ đến địa chỉ IP public của server.
  • Có một bản ghi DNS A với www.vietnixtest.com trỏ đến địa chỉ IP public của server.
  • Đã cài đặt sẵn server Apache và có file virtual host cho miền (ở trong bài viết này sẽ là /etc/apache2/sites-available/vietnixtest.conf).
Event sinh nhật 11 tuổi

Chương trình mừng sinh nhật lần thứ 11 Vietnix

Cách bảo mật Apache bằng Let’s Encrypt trên Ubuntu 20.04

Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 20.04
Cách bảo mật Apache bằng Let’s Encrypt trên Ubuntu 20.04

Bước 1: Cài đặt Certbot

Để có chứng chỉ SSL từ Let’s Encrypt, trước tiên bạn cần cài đặt phần mềm Certbot trên server bằng repo của Ubuntu.

Ta sẽ cần hai package: certbotpython3-certbot-apache. Package thứ hai là một plugin dùng để tích hợp Certbot với Apache, khi đó bạn có thể tự động hóa việc lấy chứng chỉ và cấu hình HTTPS trong server.

Chạy lệnh dưới đây để cài đặt:

sudo apt install certbot python3-certbot-apache

Nhập y rồi nhấn ENTER để xác nhận.

Bây giờ Certbot đã được cài đặt trên server. Tiếp theo bạn sẽ xác thực cấu hình của Apache để đảm bảo rằng virtual host đã được cài đặt chính xác. Khi đó client script certbot sẽ có thể tự động xác định được các miền và cấu hình lại web server để sử dụng chứng chỉ SSL mới được tạo.

Bước 2: Kiểm tra cấu hình của virtual host Apache

Để có thể tự động lấy và cấu hình SSL cho web server, Certbot cần tìm được đúng virtual host bên trong các file cấu hình Apache. Các tên miền server có thể được truy cập từ directive ServerNameServerAlias định nghĩa trong block cấu hình VirtualHost.

Nếu đã cài đặt Apache đúng theo hướng dẫn thì bạn sẽ có một block VirtualHost được thiết lập cho domain tại /etc/apache2/sites-available/vietnixtest.conf, đồng thời các directive ServerNameServerAlias cũng đã được thiết lập chính xác.

Để kiểm tra, bạn có thể mở file virtual host bằng một text editor bất kỳ:

sudo nano /etc/apache2/sites-available/vietnixtest.conf

Tìm dòng ServerNameServerAlias:

...
ServerName vietnixtest.com
ServerAlias www.vietnixtest.com
...

Nếu hai directive đã được thiết lập như trên, bạn có thể thoát text editor rồi tiếp tục thực hiện các bước dưới đây.

Ngược lại, nếu cấu hình chưa chính xác thì hãy chỉnh sửa lại. Sau đó lưu rồi đóng lại file và chạy lệnh sau để kiểm tra:

sudo apache2ctl configtest

Nếu bạn nhận được output Syntax OK thì bạn đã thiết lập thành công. Nếu có sửa đổi gì trong file cấu hình thì cần chạy lệnh dưới đây để reload lại Apache:

sudo systemctl reload apache2

Để thực hiện bảo mật Apache bằng Let’s Encrypt trên Ubuntu 20.04, bạn cần có một máy chủ cài hệ điều hành Ubuntu 20.04. Nếu bạn chưa có máy chủ hoặc muốn nâng cấp hệ thống của mình, hãy tham khảo qua các dịch vụ VPS của Vietnix.

Vietnix hiện đang cung cấp nhiều gói dịch vụ VPS tốc độ cao phù hợp với nhu cầu của khách hàng với mức giá chỉ từ 89.000 VND/Tháng, với đầy đủ tính năng và cấu hình để phục vụ cho việc triển khai các ứng dụng web trên nền tảng Linux. Bao gồm:

  • VPS Giá Rẻ
  • VPS Phổ Thông
  • VPS Cao Cấp
  • VPS NVMe

Liên hệ với đội ngũ hỗ trợ của Vietnix để được tư vấn chi tiết hơn.

Bước 3: Cho phép HTTPS qua tường lửa

Nếu đã cài sẵn tường lửa UFW thì bạn cần chỉnh sửa thiết lập để cho phép lưu lượng HTTPS trong bước này. Trong quá trình cài đặt, Apache sẽ đăng ký một số profile trong ứng dụng UFW. Bạn có thể tận dụng profile Apache Full để cho phép lưu lượng HTTP và HTTPS trên server.

Để xác thực xem các lưu lượng nào được phép truy cập vào server, bạn có thể dùng lệnh sau:

sudo ufw status

Nếu đã cài đặt Apache đúng cách thì output sẽ như dưới đây, cho biết chỉ có lưu lượng HTTP trên cổng 80 được phép truy cập:

Output
Status: active

To                              Action          From
--                               ------              ----
OpenSSH                   ALLOW       Anywhere                  
Apache                      ALLOW       Anywhere             
OpenSSH (v6)            ALLOW       Anywhere (v6)             
Apache (v6)               ALLOW       Anywhere (v6)

Để thêm lưu lượng HTTPS thì bạn cần cho phép profile Apache Full và xóa profile Apache:

sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'

Bây giờ kiểm tra lại trạng thái:

sudo ufw status
Output
Status: active

To                               Action         From
--                                 ------            ----
OpenSSH                   ALLOW       Anywhere                  
Apache Full                ALLOW       Anywhere                  
OpenSSH (v6)            ALLOW       Anywhere (v6)             
Apache Full (v6)         ALLOW       Anywhere (v6)  

Bước 4: Lấy chứng chỉ SSL

Certbot cung cấp nhiều cách lấy chứng chỉ SSL khác nhau qua plugin. Plugin Apache sẽ có trách nhiệm cấu hình lại Apache và reload cấu hình mỗi khi cần thiết. Chạy lệnh dưới đây để sử dụng plugin:

sudo certbot --apache

Lệnh này sẽ yêu cầu bạn trả lời một số câu hỏi để cấu hình chứng chỉ SSL. Trước tiên là địa chỉ email để nhận thông báo gia hạn và bảo mật:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): you@vietnixtest.com

Nhấn ENTER sau khi nhập xong địa chỉ email, bây giờ bạn sẽ được yêu cầu đồng ý các điều khoản sử dụng của Let’s Encrypt. Nhập A và nhấn ENTER để xác nhận:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

Tiếp theo, bạn sẽ được hỏi xem có muốn chia sẻ email với Electronic Frontier Foundation để nhận thông báo mới hay không. Nhập N để bỏ qua hoặc nhập Y để đồng ý rồi nhấn ENTER:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N

Tiếp theo, bạn sẽ cần cung cấp domain nào muốn kích hoạt HTTPS. Danh sách tên miền được tự động trích xuất từ cấu hình virtual host của Apache, đây cũng chính là lý do bạn cần cung cấp đúng ServerNameServerAlias trong cấu hình virtual host ở các bước trên.

Nếu muốn enable HTTPS cho mọi tên miền được liệt kê thì chỉ cần để trống rồi nhấn ENTER để tiếp tục. Ngược lại, bạn có thể nhập số thứ tự của các tên miền, ngăn cách nhau bởi dấu phẩy hoặc khoảng trắng. Sau đó nhấn ENTER để xác nhận:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: vietnixtest.com
2: www.vietnixtest.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 

Output:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for vietnixtest.com
http-01 challenge for www.vietnixtest.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/vietnixtest-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/vietnixtest-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/vietnixtest-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/vietnixtest-le-ssl.conf

Tiếp đến, bạn sẽ được yêu cầu xác nhận xem có muốn định tuyến lưu lượng HTTP sang HTTPS hay không. Nếu cho phép thì bất kỳ ai truy cập vào website thông qua các kênh không được mã hóa (HTTP) đều sẽ được tự động định tuyến sang địa chỉ HTTPS của trang. Bạn có thể chọn 2 để đồng ý định tuyến hoặc 1 nếu muốn giữ các kênh HTTP và HTTPS riêng biệt với nhau.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Sau bước này thì ta cũng đã hoàn tất việc cấu hình Certbot. Bây giờ bạn sẽ nhận được các thông tin về chứng chỉ mới như vị trí của những file vừa được tạo hay cách kiểm tra cấu hình bằng công cụ bên ngoài:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://vietnixtest.com and
https://www.vietnixtest.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=vietnixtest.com
https://www.ssllabs.com/ssltest/analyze.html?d=www.vietnixtest.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/vietnixtest/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/vietnixtest/privkey.pem
   Your cert will expire on 2020-07-27. 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

Vậy là bạn đã cài đặt và load chứng chỉ vào cấu hình của Apache thành công. Bây giờ hãy reload lại trang bằng https://, hãy để ý rằng trình duyệt sẽ hiển thị một icon ổ khóa trên thanh địa chỉ để cho biết trang đã được bảo mật.

Bạn có thể sử dụng trang SSL Labs Server Test để xác thực điểm của chứng chỉ và kiểm tra các thông tin liên quan.

Bước 5: Xác thực chế độ tự động gia hạn của Certbot

Các chứng chỉ của Let’s Encrypt sẽ có hiệu lực trong vòng 90 ngày. Package certbot có nhiệm vụ gia hạn bằng cách thêm một script vào /etc/cron.d, được quản lý bởi một dịch vụ systemctlcertbot.timer. Script này sẽ chạy hai lần một ngày và tự động gia hạn mọi chứng chỉ sắp hết hạn trong vòng 3 ngày.

Để kiểm tra trạng thái của dịch vụ, bạn có thể chạy lệnh sau:

sudo systemctl status certbot.timer

Output:

Output
● certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago
    Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left
   Triggers: ● certbot.service

Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.

Để kiểm tra quá trình gia hạn, bạn có thể chạy lệnh dưới đây:

sudo certbot renew --dry-run

Nếu không có lỗi nào thì bạn đã cài đặt thành công. Mỗi khi cần thiết, Certbot sẽ tự động gia hạn chứng chỉ và reload lại Apache để áp dụng các thay đổi. Nếu quá trình tự động gia hạn thất bại thì Let’s Encrypt sẽ gửi thông báo qua email bạn đã cung cấp ở bước trên.

Khi có nhu cầu thuê VPS để triển khai các dự án, bạn hãy liên hệ đến Vietnix để được tư vấn lựa chọn gói dịch vụ phù hợp. Vietnix hiện đang là nhà cung cấp VPS tốc độ cao uy tín top đầu tại Việt Nam, bạn hoàn toàn có yên tâm về chất lượng dịch vụ tại đây bởi những lý do sau:

  • Kinh nghiệm 10 năm trong lĩnh vực cung cấp dịch vụ VPS.
  • Được hơn 50.000 khách hàng trong và ngoài nước lựa chọn.
  • Hơn 100.000 dịch vụ đã được kích hoạt.
  • Nhận giải thưởng “Thương hiệu Việt Nam xuất sắc 2022”.
  • 97% khách hàng sử dụng đánh giá 5 sao và giới thiệu cho người quen.

Đừng ngần ngại liên hệ với Vietnix theo thông tin dưới đây để được hỗ trợ tư vấn nhé.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093 – 07 088 44444
  • Email: sales@vietnix.com.vn

Lời kết

Qua bài viết này, Vietnix đã hướng dẫn chi tiết cách cài đặt một Let’s Encrypt client – certbot để quản lý và tự động gia hạn các chứng chỉ. Bên cạnh đó, bạn cũng đã hoàn tất việc cấu hình và cài đặt chứng chỉ SSL cho domain. Nếu có bất kỳ thắc mắc nào khác, hãy để lại ở phần bình luận bên dưới để được Vietnix hỗ trợ nhanh nhất nhé.

Chia sẻ bài viết
Đánh giá
5/5 - (3 bình chọn)
Kết nối với mình qua
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PearsonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix
Bài viết liên quan
Bình luận
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận