Cài đặt Let's Encrypt SSL trên CentOS 7 với Apache và sử dụng Certbot

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

Trong hướng dẫn này, bạn sẽ sử dụng Certbot để thiết lập 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. Ngoài ra, bạn sẽ tự động hóa quá trình gia hạn chứng chỉ bằng một công việc cron, liên hệ với chúng tôi nếu bạn gặp khó khăn.

Chuẩn bị trước khi cài đặt:

Để hoàn thành hướng dẫn bảo mật Apache cài đặt SSL Let's Encrypt Cerbot trên CentOS 7, bạn cần:

  • Một máy chủ CentOS 7 được thiết lập bằng cách tuân theo hướng dẫn thiết lập máy chủ CentOS 7 ban đầu với một người dùng không phải là root có đặc quyền sudo.
  • Một tường lửa cơ bản được cấu hình.
  • Apache được cài đặt trên máy chủ CentOS 7 với máy chủ ảo được cấu hình. . Hãy chắc chắn rằng bạn có một tệp máy chủ ảo cho tên miền của bạn. Hướng dẫn này sẽ sử dụng /etc/httpd/sites-available/example.com.conf làm ví dụ.
  • Bạn nên sở hữu hoặc kiểm soát tên miền đã đăng ký mà bạn muốn sử dụng chứng chỉ với. Nếu bạn chưa có tên miền đã đăng ký, bạn có thể mua một tê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.
  • Một bản ghi DNS A trỏ tên miền của bạn đến địa chỉ IP công cộng của máy chủ của bạn. Bản ghi DNS A là cần thiết vì cách Let’s Encrypt xác nhận rằng bạn sở hữu tên miền mà nó đang cấp chứng chỉ. Ví dụ, nếu bạn muốn có một chứng chỉ cho example.com, tên miền đó phải được giải quyết đến máy chủ của bạn để quá trình xác nhận hoạt động. Thiết lập của chúng tôi sẽ sử dụng example.comwww.example.com làm tên miền, cả hai đều sẽ yêu cầu một bản ghi DNS hợp lệ.

Khi bạn đã hoàn thành tất cả các điều kiện tiên quyết này, tiến hành cài đặt phần mềm client Let’s Encrypt.

Bước 1 - Cài đặt Client Let’s Encrypt Certbot

Để sử dụng Let’s Encrypt để lấy chứng chỉ SSL, bạn cần cài đặt Certbot và mod_ssl, một module Apache cung cấp hỗ trợ cho mã hóa SSL v3.

Gói certbot không có sẵn thông qua quản lý gói theo mặc định. Bạn cần kích hoạt kho lưu trữ EPEL để cài đặt Certbot.

Để thêm kho lưu trữ EPEL cho CentOS 7, chạy lệnh sau:

sudo yum install epel-release

Bây giờ bạn đã truy cập vào kho lưu trữ, hãy cài đặt tất cả các gói cần thiết:

sudo yum install certbot python2-certbot-apache mod_ssl

Trong quá trình cài đặt, bạn sẽ được hỏi về việc nhập một khóa GPG. Khóa này sẽ xác minh tính xác thực của gói bạn đang cài đặt. Để cho phép quá trình cài đặt hoàn tất, hãy chấp nhận khóa GPG bằng cách nhập y và nhấn ENTER khi được nhắc làm như vậy.

Với những dịch vụ này được cài đặt, bạn đã sẵn sàng chạy Certbot và lấy chứng chỉ của mình.

Bước 2 - Lấy chứng chỉ

Bây giờ Certbot đã được cài đặt, bạn có thể sử dụng nó để yêu cầu một chứng chỉ SSL cho tên miền của bạn.

Việc sử dụng ứng dụng Certbot của Let’s Encrypt để tạo Chứng chỉ SSL cho Apache tự động hóa nhiều bước trong quá trình. Ứng dụng sẽ tự động lấy và cài đặt một chứng chỉ SSL mới có hiệu lực cho các tên miền bạn cung cấp như là tham số.

Để thực hiện quá trình cài đặt tương tác và lấy một chứng chỉ chỉ đối với một tên miền duy nhất, chạy lệnh certbot với:

sudo certbot --apache -d example.com

Điều này chạy certbot với plugin --apache và chỉ định tên miền cần cấu hình chứng chỉ với cờ -d.

Nếu bạn muốn cài đặt một chứng chỉ duy nhất có hiệu lực cho nhiều tên miền hoặc tên miền con, bạn có thể truyền chúng dưới dạng tham số bổ sung cho lệnh, đánh dấu mỗi tên miền hoặc tên miền con mới với cờ -d. Tên miền đầu tiên trong danh sách tham số sẽ là tên miền cơ sở được Let’s Encrypt sử dụng để tạo chứng chỉ. Vì lý do này, hãy truyền tên miền cơ sở đầu tiên trong danh sách, tiếp theo là bất kỳ tên miền con hoặc định danh phụ khác:

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

Tên miền cơ sở trong ví dụ này là example.com.

Tiện ích certbot cũng có thể yêu cầu thông tin tên miền từ bạn trong quá trình yêu cầu chứng chỉ. Để sử dụng chức năng này, gọi certbot mà không có bất kỳ tên miền nào:

sudo certbot --apache

Chương trình sẽ hiển thị một hướng dẫn từng bước để tùy chỉnh tùy chọn chứng chỉ của bạn. Nó sẽ yêu cầu bạn cung cấp địa chỉ email để khôi phục chìa khóa mất và thông báo, và sau đó yêu cầu bạn đồng ý với điều khoản sử dụng. Nếu bạn không chỉ định tên miền của mình trong dòng lệnh, bạn sẽ được yêu cầu điều đó. Nếu các tệp Máy Chủ Ảo của bạn không chỉ định rõ tên miền mà họ phục vụ bằng cách sử dụng chỉ thị ServerName, bạn sẽ được yêu cầu chọn tệp máy chủ ảo. Trong hầu hết các trường hợp, tệp ssl.conf mặc định sẽ hoạt động.

Bạn cũng có thể chọn giữa việc kích hoạt cả hai quyền truy cập httphttps hoặc buộc tất cả các yêu cầu chuyển hướng đến https. Đối với tính bảo mật tốt hơn, nên chọn tùy chọn 2: Redirect nếu bạn không có bất kỳ nhu cầu đặc biệt nào để cho phép kết nối không mã hóa. Chọn lựa của bạn sau đó 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
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

Khi quá trình cài đặt hoàn tất thành công, bạn sẽ thấy một thông báo tương tự như sau:

Output
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2019-08-14. 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"
 - 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

Các tệp chứng chỉ được tạo sẽ có sẵn trong một thư mục con có tên theo tên miền cơ sở của bạn trong thư mục /etc/letsencrypt/live.

Bây giờ chứng chỉ của bạn đã được tải về, cài đặt và nạp, bạn có thể kiểm tra trạng thái chứng chỉ SSL của mình để đảm bảo rằng mọi thứ đều đang hoạt động.

Bước 3 - Kiểm tra trạng thái chứng chỉ của bạn

Tại điểm này, bạn có thể đảm bảo rằng Certbot đã tạo chứng chỉ SSL của bạn một cách đúng đắn bằng cách sử dụng SSL Server Test.

Mở liên kết sau trong trình duyệt web ưa thích của bạn, thay thế example.com bằng tên miền cơ sở của bạn:

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

Bạn sẽ đến trang mà ngay lập tức bắt đầu kiểm thử kết nối SSL đến máy chủ của bạn:

ssl-certbot-server-test-apache-centos-7

Khi bài kiểm tra bắt đầu chạy, nó có thể mất vài phút để hoàn thành. Trạng thái của bài kiểm tra sẽ cập nhật trên trình duyệt của bạn.

Khi bài kiểm tra hoàn thành, trang sẽ hiển thị một chữ cái xếp hạng đánh giá mức độ bảo mật và chất lượng cấu hình máy chủ của bạn. Tại thời điểm viết hướng dẫn này, các cài đặt mặc định sẽ đưa ra một xếp hạng A:

ssl certbot report A apache centos 7

Để biết thêm thông tin về cách SSL Labs xác định các xếp hạng này, hãy kiểm tra bài viết SSL Labs Grading mô tả các cập nhật được thực hiện cho hệ thống xếp hạng vào tháng 1 năm 2018.

Hãy thử tải lại trang web của bạn bằng cách sử dụng https:// và chú ý đến chỉ báo bảo mật của trình duyệt. Bây giờ, nó sẽ chỉ ra rằng trang web của bạn được bảo vệ đúng cách, thường là bằng biểu tượng khóa màu xanh.

Với chứng chỉ SSL của bạn đã được cài đặt và xác nhận, bước tiếp theo là thiết lập tự động gia hạn chứng chỉ để duy trì tính hợp lệ của chứng chỉ của bạn.

Bước 4 - Thiết lập tự động gia hạn

Chứng chỉ Let’s Encrypt có hiệu lực trong vòng 90 ngày, nhưng khuyến nghị là bạn nên gia hạn chúng mỗi 60 ngày để có một khoảng thời gian chờ lỗi. Do đó, việc tốt nhất là tự động hóa quy trình này để định kỳ kiểm tra và gia hạn chứng chỉ.

Trước tiên, hãy xem xét lệnh mà bạn sẽ sử dụng để gia hạn chứng chỉ. Client Certbot của Let’s Encrypt có một lệnh gia hạn mà tự động kiểm tra các chứng chỉ đã cài đặt hiện tại và cố gắng gia hạn chúng nếu chúng còn ít hơn 30 ngày trước khi hết hạn. Bằng cách sử dụng tùy chọn --dry-run, bạn có thể chạy mô phỏng của công việc này để kiểm tra cách gia hạn hoạt động:

sudo certbot renew --dry-run

Đầu ra sẽ trông giống như sau:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.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 example.com
http-01 challenge for www.example.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/example.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/example.com/fullchain.pem (success)
...

Lưu ý rằng nếu bạn đã tạo một chứng chỉ gói ghém với nhiều tên miền, chỉ có tên miền cơ sở sẽ được hiển thị trong đầu ra, nhưng quá trình gia hạn sẽ có hiệu lực cho tất cả các tên miền được bao gồm trong chứng chỉ này.

Một cách thực tế để đảm bảo rằng chứng chỉ của bạn sẽ không trở nên lạc hậu là tạo một công việc cron sẽ thực hiện định kỳ lệnh gia hạn tự động cho bạn. Vì quá trình gia hạn đầu tiên kiểm tra ngày hết hạn và chỉ thực hiện gia hạn nếu chứng chỉ còn ít hơn 30 ngày trước khi hết hạn, nên hoàn toàn an toàn để tạo một công việc cron chạy mỗi tuần hoặc thậm chí mỗi ngày.

Tài liệu chính thức của Certbot khuyến khích chạy cron hai lần mỗi ngày. Điều này sẽ đảm bảo rằng, trong trường hợp Let’s Encrypt khởi xướng việc thu hồi chứng chỉ, không có quá nửa ngày trôi qua trước khi Certbot gia hạn chứng chỉ của bạn.

Chỉnh sửa crontab để tạo một công việc mới sẽ chạy gia hạn hai lần mỗi ngày. Để chỉnh sửa crontab cho người dùng root, chạy:

sudo crontab -e

Trình soạn thảo văn bản của bạn sẽ mở tệp crontab mặc định, đây là một tệp văn bản trống ở thời điểm này. Hướng dẫn này sẽ sử dụng trình soạn thảo vi. 

Chuyển sang chế độ chèn bằng cách nhấn i và thêm dòng sau đây:

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

Khi bạn hoàn tất, nhấn ESC để thoát khỏi chế độ chèn, sau đó :wqENTER để lưu và thoát khỏi tệp. Điều này sẽ tạo ra một công việc cron mới sẽ thực thi vào buổi trưa và nửa đêm hàng ngày. Thêm một yếu tố ngẫu nhiên vào công việc cron của bạn sẽ đảm bảo rằng các công việc hàng giờ không xảy ra cùng một phút, gây ra một đỉnh trên máy chủ; python -c 'import random; import time; time.sleep(random.random() * 3600)' sẽ chọn một phút ngẫu nhiên trong vòng một giờ cho các nhiệm vụ gia hạn của bạn.

Để biết thêm thông tin về cách tạo và lên lịch công việc cron, bạn có thể kiểm tra Hướng dẫn cách sử dụng Cron để tự động hóa nhiệm vụ trong VPS của chúng tôi. Thông tin chi tiết hơn về gia hạn có thể được tìm thấy trong tài liệu Certbot.

Kết luận

Trong hướng dẫn này, bạn đã cài đặt ứng dụng Certbot của Let’s Encrypt, tải xuống chứng chỉ SSL cho tên miền của bạn và thiết lập tự động gia hạn chứng chỉ giúp bảo mật Apache trên CentOS 7. Nếu bạn có bất kỳ câu hỏi nào về việc sử dụng Certbot, bạn có thể kiểm tra tài liệu chính thức của Certbot. Chúng tôi cũng khuyến nghị bạn kiểm tra blog chính thức của Let’s Encrypt để cập nhật thông tin quan trọng từ thời gian này.

Đế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