Hướng Dẫn Bảo Mật Apache Bằng Let’s Encrypt trên CentOS 7

Việc sử dụng Let's Encrypt không chỉ đảm bảo tính bảo mật cao cho dịch vụ máy chủ web của chúng ta mà còn giúp tự động hóa quá trình cài đặt và gia hạn chứng chỉ SSL/TLS, từ đó giúp giảm thiểu công việc quản lý và duy trì hệ thống. Vậy hãy cùng LANIT tìm hiểu cách bảo mật Apache bằng Let’s Encrypt trên CentOS 7 trong bài viết dưới đây nhé!

Giới thiệu về Let’s Encrypt

Let’s Encrypt là một nơi cung cấp chứng chỉ miễn phí cho việc mã hóa Transport Layer Security (TLS), từ đó cho phép mã hóa HTTPS trên các máy chủ web. Nó đơn giản hóa quá trình tạo, xác thực, ký, cài đặt và gia hạn chứng chỉ bằng cách cung cấp một phần mềm khách (client) tự động hóa hầu hết các bước – Certbot.

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 từ Let’s Encrypt trên một máy chủ CentOS 7 chạy Apache làm máy chủ web. Thêm vào đó, 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 cron job. Bạn có thể theo dõi các bước ngay trong phần dưới đây nhé!

Chuẩn bị

  • Một tài khoản người dùng có quyền sudo trên máy chủ CentOS 7 nhưng không phải root
  • Khởi động tường lửa của bạn.
  • Thực hiện cài đặt Apache với  ảo hóa virtual host  trên máy chủ CentOS 7. Ví dụ: /etc/httpd/sites-available/lanit.com.conf.
  • Chuẩn bị một tên miền để sẵn sàng sử dụng cho việc cấp chứng chỉ. 
  • Yêu cầu một DNS A Record để trỏ domain đến địa chỉ public IP của máy chủ. Đây là một thao tác bắt buộc vì đây là cách để Let’s Encrypt xác định được rằng bạn đang sở hữu tên miền  để Let’s Encrypt có thể cấp chứng chỉ.

Ví dụ: Nếu bạn muốn đăng ký chứng chỉ SSL cho lanit.com,  trước hết bạn cần phải trỏ domain phải trỏ tới máy chủ của bạn, sau đó các quy trình cấp chứng chỉ mới có thể tiếp tục diễn ra. 

Sau khi hoàn tất chuẩn bị tất cả yêu cầu trên, hệ thống đã sẵn sàng cài đặt Let’s Encrypt client software.

Hướng dẫn bảo mật Apache bằng Let’s Encrypt trên CentOS 7

Dưới đây là các bước hướng dẫn bảo mật Apache bằng Let’s Encrypt trên CentOS 7 trong bài  viết dưới đây:

Bước 1:  Tiến hành cài đặt Certbot Let’s Encrypt Client

Một trong những yếu tố quan trọng để có thể lấy chứng chỉ từ Let’s Encrypt, thì trước hết bạn cần cài đặt Certbot và mod_ssl. Trong mỗi một Apache module có thể hỗ trợ mã hóa SSL v3.

Gói certbot thường không có sẵn, do đó, mặc định bạn cần thông qua package manager (trình quản lý gói). Để  tiến hành cài đặt Certbot, bạn cần khởi động EPEL repository.

Để thêm CentOS 7 EPEL repository, bạn có thể sử dụng lệnh sau đây:

sudo yum install epel-release
Cách Bảo Mật Apache Bằng Let’s Encrypt trên CentOS 7

Tiếp theo, bạn truy cập vào repository và tiến hành cài đặt các gói cần thiết bằng cách sử dụng lệnh sau đây:

sudo yum install certbot python2-certbot-apache mod_ssl
Dnwj1o F25K5xRo K4sgWDHUFOMPxnGeLHu56uSCowYgy2B8D9t2vZXDa0uG6bs1JC8QBHRZPzZlRLest4ukF04NAAHb6E50YLP E3yaWdrmNKxjhhYHQRzgtJObx DMe4H2DHoT3DNaLcgkeGP J7Q

Trong quá trình cài đặt, bạn sẽ nhận  về  một câu hỏi về import GPG key. Key này sẽ sử dụng để xác thực gói mà bạn đang cài đặt. Bước tiếp theo, bạn hãy nhập y để cho phép import GPG key, sau đó chọn ENTER.

Sau khi thao tác xong các bước trên, bạn đã có thể dùng Certbot và fetch certificate của mình.

Bước 2: Tiến hành lấy chứng chỉ

Sau khi đã được cài đặt, bạn hãy sử dụng cerbot để yêu cầu chứng chỉ SSL cho  tên miền của mình.

Bạn hãy dùng certbot từ Let’s Encrypt client để tạo chứng chỉ SSL cho Apache lúc này hệ thống sẽ hoạt động một cách tự động. Client lúc này  sẽ nhận và  cài đặt một chứng chỉ SSL mới có hiệu lực cho các domain mà bạn cung cấp như  các tham số.

Để cài đặt và nhận certificate chỉ sử dụng một domain duy nhất, bạn hãy sử dụng lệnh sau đây:

sudo certbot --apache -d lanit.com

Chú ý: Câu lệnh trên dùng certbot với –apache và chỉ được sử dụng cho domain cần cấu hình certificate với -d.

Nếu bạn muốn sử dụng một chứng chỉ cho nhiều domain hoặc subdomain, bạn sử dụng bằng cách truyền những tham số trong dòng lệnh, sau đó dùng -d để đánh dấu mỗi tên miền hoặc tên miền phụ. 

Trong đó, domain đầu tiên sẽ được Let’s Encrypt dùng làm base domain để tạo chứng chỉ. Vậy nên, bạn hãy chuyển domain đầu tiên vào  trong danh sách các tham số, tiếp đó, sẽ là các tên miền còn lại hoặc subdomain. Để thực hiện các bước trên bạn có thể sử dụng lệnh sau:

sudo certbot --apache -d lanit.com -d www.lanit.com

Trong đó: Base domain trong ví dụ này là lanit.com.

Lúc này, Certbot có thể yêu cầu thông tin về tên miền của bạn trong quá trình nhận certificate. Để thực hiện bước này bạn sử dụng lệnh certbot như sau:

Bạn sẽ hướng dẫn từng bước trong việc thiết lập các tùy chọn của chứng chỉ. Sau đó, hệ thống sẽ yêu cầu bạn cung cấp email để thông báo,  bạn lúc này có thể khôi phục lại khóa khi mất, sau đó chấp nhận yêu cầu với các điều khoản dịch vụ. 

sudo certbot --apache

Nếu các file virtual host không chỉ định tên miền thì bạn có thể dùng ServerName, bạn sẽ được yêu cầu chọn file virtual host. File ssl.conf sẽ hoạt động mặc định trong hầu hết các trường hợp.

Bạn có thể lựa chọn giữa cho phép truy cập qua http và https, hoặc mặc định yêu cầu sẽ được chuyển hướng đến https. Nếu bạn không có nhu cầu đặc biệt cho kết nối không mã hóa thì lựa chọn khác là Redirect sẽ cung cấp mức bảo mật tốt hơn. Chọn xong, nhấn ENTER.

Output
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
change by editing your web server's configuration.

new sites, or if you’re confident your site works on HTTPS. You can undo this

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):2

Sau đó, màn hình sẽ hiển thị output bạn đã cài đặt thành công.

Nếu hoàn thành các bước trên bạn đã cài đặt chứng chỉ, để đảm bảo mọi thứ đều đang hoạt động bạn nên kiểm tra SSL certificate status.

Bước 3: Kiểm tra tình trạng chứng chỉ

Tại bước này, chính là kiểm tra tình trạng chứng chỉ SSL của bạn để đảm bảo rằng Certbot đã tạo và cài đặt chứng chỉ SSL hoạt động chính xác hay chưa. Để thao tác các bước kiểm tra, bạn sẽ có thể sử dụng SSL Server Test từ công ty bảo mật đám mây Qualys.

Để chi tiết hơn, bạn cần thao tác theo các bước sau:

Đầu tiên, bạn cần mở trình duyệt web và truy cập vào đường dẫn dưới đây: 

https://www.ssllabs.com/ssltest/analyze.html?d=example.com

(Bạn hãy thay “example.com” bằng tên miền của bạn)

Trang web SSL Labs sẽ bắt đầu kiểm tra kết nối SSL tới server của bạn.

Quá trình kiểm tra có thể mất một vài phút để hoàn thành bạn vui lòng đợi nhé. Trong thời gian kiểm tra trạng thái hệ thống sẽ được cập nhật trên trình duyệt của bạn.

Khi hệ thống kiểm tra hoàn tất, trang web sẽ hiển thị một chữ cái để đánh giá mức độ bảo mật và chất lượng cấu hình server của bạn. Mức đánh giá này mặc định thường là “A”.

Để chắc chắn hơn, bạn cũng nên tải lại trang web của mình bằng địa chỉ https:// để kiểm tra biểu tượng bảo mật an toàn ở trình duyệt. Nếu thấy biểu tượng khóa màu xanh lá cây thì chứng tỏ rằng trang web đã được bảo mật tuyệt đối

Nếu thực hiện đầy đủ các bước trên, bạn hoàn toàn có thể kiểm tra tình trạng chứng chỉ SSL một cách chính xác nhất.

Bước 4: Tự Động Gia Hạn

Chứng chỉ Let’s Encrypt có thời hạn 90 ngày, tuy nhiên, khuyến khích bạn gia hạn mỗi 60 ngày để có một dự phòng. Vậy nên, bạn nên tự động hóa việc này để kiểm tra và gia hạn chứng chỉ một cách thường xuyên và không bị ngắt quãng.

Để tiến hành quá trình này, bạn sử dụng lệnh renew của Certbot. Lệnh này sẽ tự động kiểm tra các chứng chỉ mà bạn đã cài đặt và sẽ tự động gia hạn chúng nếu còn dưới 30 ngày hết hạn. Bạn có thể sử dụng lệnh  –dry-run để tự động gia hạn chứng chỉ:

sudo certbot renew --dry-run

Sau khi nhập lệnh. màn hình hiển thị Output sẽ có dạng như sau:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/lanit.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 lanit.com
http-01 challenge for www.lanit.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/lanit.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/lanit.com/fullchain.pem (success)
...

Chú ý: Bạn có thể thay lanit.com bằng domain của mình 

Để đảm bảo rằng chứng chỉ luôn trong trạng thái còn hiệu lực, bạn có thể lên lịch một cron để tự động kiểm tra và gia hạn chứng chỉ  theo định kỳ.  Quá trình gia hạn không chỉ kiểm tra ngày hết hạn và thực hiện gia hạn khi còn dưới 30 ngày mà còn có thể lên lịch chạy cron hàng tuần hoặc thậm chí hàng ngày.

Trong hệ thống  của Certbot khuyến khích nên  chạy cron hai lần mỗi ngày. Điều này để đảm bảo rằng, trong trường hợp Let’s Encrypt yêu cầu thu hồi chứng chỉ, hoặc không còn quá nửa ngày trước khi Certbot gia hạn chứng chỉ của bạn.

Để chỉnh sửa crontab bạn có thể sử dụng lệnh sau:

sudo crontab -e

Và để gia hạn hai lần mỗi ngày, bạn có thể sử dụng lệnh sau:

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

Sau khi hoàn tất các bước trên bạn có thể đóng file. Lúc này hệ thống đã được tự động gia hạn chứng chỉ.

Để hoàn thành các bước theo hướng dẫn trên, bạn có thể liên hệ ngay với LANIT để được tư vấn về việc mua chứng chỉ SSL để bảo mật trang web của bạn một cách tốt nhất. LANIT khẳng định là một nhà cung cấp hoàn toàn uy tín với chất lượng dịch vụ, chăm sóc khách hàng đến từ tâm. Để liên hệ với chúng tôi, vui lòng liên hệ theo địa chỉ sau đây:

  • Trụ sở tại: Toà Báo Công An Nhân Dân, 23 Nghiêm Xuân Yêm, Thanh Liệt, Thanh Trì, Hà Nội.
  • Hotline: 0945.96.95.94
  • Email: [email protected]
  • Website: https://lanit.com.vn/

Lời kết

Trên đây là toàn bộ các bước hướng dẫn của LANIT về cách bảo mật Apache bằng Let’s Encrypt trên CentOS 7. Nếu có bất kỳ thắc mắc nào hãy dể lại bình luận hoặc liên hệ chúng tôi ngay để được giải đáp ngay lập tức nhé!

avata Hải

Triệu Huyền Trang

Triệu Huyền Trang chuyên gia 3 năm kinh nghiệm trong ngành Công Nghệ, Phần Mềm. Chuyên chia sẻ các kiến thức phần mềm mã nguồn, ứng dụng và thông tin về công nghệ hữu ích.

Chat với chúng tôi qua Zalo!
Chat với chúng tôi qua Zalo!