Trong bài viết này, chúng ta sẽ khám phá quá trình cài đặt và cấu hình certbot trên máy chủ Linux. Chúng tôi sẽ giải thích chi tiết cách để có được chứng chỉ SSL/TLS Let's Encrypt cho tên miền của bạn. Chúng tôi cũng sẽ mô tả cách cài đặt nó trên máy chủ web (như Nginx hoặc Apache) và thiết lập gia hạn chứng chỉ tự động để đảm bảo kết nối an toàn liên tục với tài nguyên web của bạn.
certbot là một công cụ mã nguồn mở miễn phí được thiết kế để tự động thu thập và gia hạn Chứng chỉ SSL / TLS. Nó đóng vai trò quan trọng trong việc bảo mật kết nối giữa máy chủ và máy khách, bảo vệ dữ liệu khỏi truy cập trái phép. Certbot đơn giản hóa quá trình cài đặt và gia hạn chứng chỉ SSL. Chứng chỉ không chỉ tăng cường bảo mật mà còn thúc đẩy sự tin tưởng của người dùng vào tài nguyên web của bạn, do đó cải thiện cả danh tiếng của trang web và thứ hạng của công cụ tìm kiếm.
Cài đặt Certbot
Certbot được bao gồm trong hầu hết các bản phân phối theo mặc định, vì vậy để cài đặt nó trên Debian / Ubuntu hệ thống, bạn chỉ cần cập nhật danh sách gói:
apt update
Sau đó, bắt đầu quá trình cài đặt:
apt install certbot
Certbot hỗ trợ các plugin giúp thiết lập và cấu hình chứng chỉ cho máy chủ web. Để cài đặt các plugin này, hãy sử dụng lệnh tương ứng:
apt install certbot python3-certbot-nginx # for Nginx apt install certbot python3-certbot-apache # for Apache
Quá trình cài đặt cho Red Hat hệ thống (chẳng hạn như RHEL, CentOS, Fedora) hơi khác một chút. Ban đầu, bạn cần thêm kho lưu trữ EPEL:
yum install epel-release
Sau đó cài đặt công cụ:
yum install certbot
Tương tự như vậy, có một tùy chọn để chọn plugin cho một máy chủ web cụ thể:
yum install python3-certbot-nginx # for Nginx yum install python3-certbot-apache # for Apache
Sau khi cài đặt, bạn có thể tiến hành lấy chứng chỉ ngay.
Nhận chứng chỉ SSL
Trong phần này, chúng tôi sẽ thảo luận về quy trình lấy chứng chỉ độc lập với một máy chủ web cụ thể, sau đó mô tả quy trình cài đặt chứng chỉ cho Nginx và Apache. Tuy nhiên, trước tiên, điều cần thiết là phải hiểu cú pháp và chức năng của chương trình. Nó xuất hiện như sau:
certbot command option -d domain
Các lệnh chính bao gồm:
certbot certonly
- Lấy chứng chỉ nhưng không cài đặt.certbot certificates
- Lệnh này hiển thị danh sách tất cả các chứng chỉ đã cài đặt.certbot renew
- Mở rộng chứng chỉ hiện có.certbot revoke
- Thu hồi chứng chỉ hiện có.certbot delete
- Xóa chứng chỉ hiện có.
Các tùy chọn thường được sử dụng nhất là:
--nginx
- Sử dụng tập lệnh cấu hình Nginx để xác minh tên miền.--apache
- Sử dụng tập lệnh cấu hình Apache để xác minh tên miền.-d
- Danh sách các miền được yêu cầu cấp chứng chỉ.--standalone
- Sử dụng chế độ độc lập để xác minh tên miền.--manual
- Thực hiện xác minh tên miền thủ công.
Đây chỉ là một ví dụ về các lệnh và tùy chọn thường gặp nhất. Bạn có thể tự làm quen với danh sách đầy đủ các khả năng của chương trình trong phần trợ giúp:
certbot –help

Bây giờ chúng ta tiến hành lấy chứng chỉ. Ví dụ, chúng ta sẽ lấy chứng chỉ cho một máy chủ ảo cho một tên miền cấp ba miễn phí như yourusername.pserver.space
Đầu tiên, bạn cần nhập lệnh:
certbot certonly
Để trả lời, tiện ích sẽ yêu cầu bạn chọn phương pháp để xác minh quyền sở hữu tên miền:

Tùy chọn đầu tiên rất tiện lợi nếu bạn không có máy chủ web được cấu hình hoặc bạn không muốn thay đổi máy chủ hiện có. Phương pháp này tạo một máy chủ web tạm thời để xác nhận quyền sở hữu tên miền của bạn. Phương pháp này lý tưởng cho việc thiết lập đơn giản và nhanh chóng. Khi chọn phương pháp này, điều quan trọng là phải giữ cổng 80 trống.
Tùy chọn thứ hai được ưa chuộng hơn nếu bạn đã có máy chủ web đang hoạt động và bạn muốn sử dụng nó để xác minh quyền đối với tên miền. Certbot đặt các tệp đặc biệt vào một thư mục trên máy chủ của bạn, sau đó được trung tâm chứng nhận kiểm tra.
Chúng ta chọn tùy chọn đầu tiên và nhấp vào tiếp theo. Ở giai đoạn này, bạn sẽ cần phải:
- Nhập địa chỉ email;
- Đồng ý với các điều khoản dịch vụ;
- Đồng ý hoặc từ chối nhận email thay mặt cho công ty và các đối tác của công ty;
- Chỉ định tên miền mà chứng chỉ được cấp.

Sau khi hoàn tất quá trình cấp chứng chỉ bằng công cụ Certbot, đường dẫn đến thư mục lưu trữ chứng chỉ đã cấp và dữ liệu cho tài khoản của bạn sẽ được chỉ ra:

Việc còn lại của bạn là liên kết chứng chỉ đã lấy được với dịch vụ cần thiết.
Cài đặt chứng chỉ cho Nginx hoặc Apache
Phần này giả định rằng một số điều kiện cơ bản đã được đáp ứng:
- Bạn đã cài đặt và cấu hình máy chủ web, Nginx hoặc Apache. Máy chủ web này phải có thể truy cập được từ internet thông qua tên miền mà bạn định lấy chứng chỉ;
- Trong quá trình cài đặt công cụ, bạn cũng đã cài đặt plugin cho Nginx hoặc Apache bằng lệnh thích hợp;
- Tường lửa cho phép kết nối trên các cổng 80 và 443. Nếu các cổng này đóng đối với các kết nối, dịch vụ sẽ không khả dụng đối với các kết nối đến. Để biết thêm chi tiết về hoạt động của tường lửa, chúng tôi đã thảo luận về điều này trong bài viết về thiết lập tường lửa trên Linux.
Khi tất cả các điều kiện đã được đáp ứng, bạn có thể tiến hành trực tiếp đến việc cấp chứng chỉ. Chúng ta sẽ xem xét quy trình lấy chứng chỉ SSL trên máy chủ sử dụng Nginx làm ví dụ. Tuy nhiên, nếu bạn đang sử dụng máy chủ web Apache, quy trình hoàn toàn giống hệt nhau.
Để lấy được chứng chỉ, bạn cần nhập lệnh:
certbot --nginx # for Nginx certbot --apache # for Apache
Để đáp lại, công cụ sẽ yêu cầu: địa chỉ email, đồng ý với các điều khoản sử dụng dịch vụ Let's Encrypt và quyền gửi email thay mặt cho dịch vụ và các đối tác của dịch vụ.

Sau đó, bạn sẽ cần chỉ định tên miền mà chứng chỉ được cấp. Certbot có thể tự động xác định tên miền nếu nó được chỉ định trong tên máy chủ lĩnh vực cho Nginx cấu hình hoặc Tên máy chủ và ServerAliases cho Apache. Nếu không chỉ định, chương trình sẽ thông báo cho bạn và yêu cầu bạn nhập tên miền theo cách thủ công. Sau đó, tiện ích sẽ hỏi xem có bật chuyển hướng yêu cầu từ giao thức HTTP sang HTTPS hay không. Để thiết lập chuyển hướng tự động, bạn nên chọn tùy chọn thứ hai:

Sau một thời gian, Certbot sẽ thông báo cho bạn về việc lấy được chứng chỉ thành công cho tên miền đã chỉ định. Từ thời điểm này trở đi, tất cả các kết nối đến sẽ được chuyển hướng từ cổng 80 đến 443. Công cụ sẽ hiển thị các thư mục mà bạn có thể tìm thấy tất cả dữ liệu chứng chỉ và thông tin chi tiết về tài khoản Let's Encrypt:

Tin nhắn cũng sẽ chỉ rõ thời hạn hiệu lực của chứng chỉ đã nhận được và các tùy chọn quan trọng để quản lý tất cả các chứng chỉ đang hoạt động:
- chắc chắn. Tùy chọn này được sử dụng để lấy hoặc cập nhật chứng chỉ mà không cần cấu hình máy chủ web tự động. Certbot sẽ chỉ yêu cầu hoặc cập nhật chứng chỉ nhưng sẽ không thực hiện bất kỳ thay đổi tự động nào đối với cấu hình máy chủ. Trước đây, chúng tôi đã sử dụng tùy chọn này để lấy chứng chỉ mà không bị ràng buộc với máy chủ web.
- đổi mới được sử dụng để tự động gia hạn tất cả các chứng chỉ đã được cấp thông qua Certbot và còn trong thời hạn hiệu lực. Chương trình sẽ kiểm tra tất cả các chứng chỉ và nếu bất kỳ chứng chỉ nào hết hạn trong vòng 30 ngày hoặc ít hơn, chứng chỉ đó sẽ được tự động gia hạn.
Tiếp theo trong hướng dẫn, chúng tôi sẽ thảo luận về cách thiết lập gia hạn chứng chỉ tự động mà không cần sự can thiệp của người dùng sau mỗi ba tháng.
Gia hạn chứng chỉ tự động trong Certbot
Dành cho Debian/Ubuntu
Khi sử dụng các hệ điều hành này, Certbot tự động thêm một tập lệnh vào danh sách tác vụ để tự động gia hạn các chứng chỉ đã cài đặt. Bạn có thể kiểm tra chức năng của tập lệnh bằng lệnh sau:
systemctl status certbot.timer

Phản hồi sẽ hiển thị trạng thái của dịch vụ, cũng như thư mục chứa tệp cấu hình. Bạn có thể mở tệp này bằng bất kỳ trình soạn thảo văn bản nào. Nếu bạn không có kinh nghiệm với trình soạn thảo văn bản trong Linux, chúng tôi khuyên bạn nên làm quen với tổng quan của chúng tôi trong những giải pháp phổ biến nhất. Trong trường hợp này, chúng tôi sẽ sử dụng nano:
nano /lib/systemd/system/certbot.timer

Tất cả các thông số quan trọng đều được đánh dấu:
- Lịch trình cho thấy dịch vụ sẽ hoạt động hai lần một ngày vào lúc 00:00 và 12:00;
- Giá trị thứ hai biểu thị độ trễ ngẫu nhiên tính bằng giây sẽ được thêm vào thời điểm bắt đầu của bộ đếm thời gian. Trong trường hợp này, là 43,200 giây (12 giờ), khiến cho việc phóng ngẫu nhiên hơn và phân tán tải;
- Tham số này đảm bảo rằng nếu bộ hẹn giờ được cho là sẽ được thực thi trong khi tắt hệ thống, nó sẽ được kích hoạt ngay khi khởi động.
Bạn cũng có thể chạy lệnh kiểm tra bắt buộc việc gia hạn chứng chỉ:
certbot renew --dry-run
Sử dụng lệnh này, các chứng chỉ sẽ không được cập nhật. Thay vào đó, công cụ sẽ thực hiện các hành động tương tự như việc lấy chứng chỉ khi hết hạn. Theo cách này, bạn có thể đảm bảo chức năng của dịch vụ liên quan đến việc gia hạn tự động.
Dành cho CentOS, Fedora và các hệ điều hành khác
Quá trình bật cập nhật tự động trên các hệ thống họ Red Hat có đôi chút khác biệt. Không giống như Debian/Ubuntu, đối với CentOS và các hệ thống khác, bạn cần phải thêm thủ công một tác vụ vào trình lập lịch. Đối với việc này, chúng tôi sẽ sử dụng cron dụng cụ:
crontab -e
Sau đó, trong tệp mở ra, hãy thêm dòng sau:
0 12 * * * /usr/bin/certbot renew --quiet
Chúng ta hãy phân tích các đối số chính của lệnh:
- Thời gian thực hiện. Trong trường hợp này, lệnh sẽ tự động chạy vào lúc 12:00 hàng ngày;
- Lệnh gia hạn chứng chỉ SSL/TLS bằng Certbot;
- --Yên lặng cờ này sẽ ngăn chặn đầu ra, làm cho quá trình này ẩn hơn và ít gây chú ý hơn trong nhật ký hoặc màn hình hiển thị của hệ thống.
Sau khi thêm lệnh, bạn cần lưu các thay đổi vào tệp.
Cũng giống như Debian/Ubuntu, bạn cũng có thể khởi tạo kiểm tra bắt buộc việc gia hạn chứng chỉ:
certbot renew --dry-run
Kết quả của việc thực hiện lệnh thành công sẽ như sau:

Kết luận
Chúng tôi đã khám phá quy trình toàn diện để cài đặt và cấu hình Certbot trên máy chủ Linux. Bằng cách làm theo các hướng dẫn được cung cấp, bạn có thể lấy thành công chứng chỉ SSL/TLS từ Let's Encrypt, cài đặt chứng chỉ này trên máy chủ web của mình và cấu hình gia hạn tự động để đảm bảo bảo vệ liên tục và tăng độ tin cậy vào tài nguyên web của bạn. Với Certbot, bạn có thể dễ dàng tạo ra một môi trường đáng tin cậy và an toàn cho người dùng.