Certbot là một công cụ miễn phí giúp bạn tự động cài đặt và gia hạn chứng chỉ SSL từ Let’s Encrypt. Trong bài viết này, mình sẽ hướng dẫn bạn cách lấy chứng chỉ SSL trên Ubuntu 20.04 bằng Certbot ở chế độ Standalone cho website dễ dàng và nhanh chóng nhất.
Những điểm chính
- Giới thiệu chung về Certbot: Những thông tin tổng quan về Certbot và cách thức hoạt động của phần mềm này.
- Yêu cầu cần đáp ứng: Trước khi thực hiện các thao tác, bạn cần có 1 máy chủ Ubuntu 20.04, tài khoản người dùng có quyền sudo, tường lửa cài đặt sẵn, tên miền đang hoạt động và tắt 2 port 80, 443.
- Các bước lấy chứng chỉ SSL trên Ubuntu 20.04 bằng Certbot: Bao gồm cài đặt Certbot, khởi chạy Certbot, cấu hình ứng dụng và thiết lập tự động gia hạn chứng chỉ.
- Biết được Vietnix là sự lựa chọn tối ưu cho dịch vụ VPS tại thị trường Việt Nam.
Giới thiệu về Certbot
Certbot cung cấp một loạt các giải pháp xác thực tên miền, tìm nạp chứng chỉ và tự động cấu hình Apache lẫn Nginx. Trong phạm vi bài viết này, mình sẽ giúp bạn tìm hiểu về Certbot (Standalone mode) và cách ứng dụng phần mềm này trong các công tác bảo mật, chẳng hạn như bảo vệ mail server hay các công cụ messsage-broker như RabbitMQ.

Bài viết sẽ không đi sâu vào các thao tác thực hiện cấu hình SSL. Tuy vậy sau khi thực hiện đầy đủ các bước được hướng dẫn dưới đây, bạn sẽ thiết lập được tính năng tự động tải lại dịch vụ để nhận chứng chỉ SSL hợp lệ và đã được gia hạn.
Yêu cầu về cách lấy chứng chỉ SSL trên Ubuntu 20.04 bằng Certbot (Standalone mode)
Trước khi bắt đầu cần chuẩn bị:
- Một máy chủ Ubuntu 20.04 với tài khoản người dùng thông thường (được cấp quyền sudo ) và đã được cấu hình tường lửa cơ bản.
- Một tên miền thực tế đã trỏ vào máy chủ của bạn, trong bài viết này sẽ lấy đại diện là
your_domain
. - Tắt hết các port 80, 443 còn đang hoạt động trên máy chủ. Nếu thực hiện thao tác trên web server đang chạy ở hai cổng này thì bạn phải sử dụng một chế độ khác, ví dụ như webroot mode ở Certbot.
Nếu bạn chưa có máy chủ để thiết lập Ubuntu hoặc đang tìm kiếm một giải pháp mạnh mẽ, ổn định và tiết kiệm chi phí thì có thể tham khảo ngay dịch vụ VPS AMD tốc độ cao tại Vietnix. Với VPS AMD, bạn sẽ được trải nghiệm hiệu năng vượt trội, tốc độ xử lý nhanh chóng, đảm bảo website của bạn luôn hoạt động mượt mà và ổn định. Bên cạnh đó, Vietnix còn cung cấp chứng chỉ SSL giá rẻ, giúp bạn tiết kiệm chi phí mà vẫn đảm bảo an toàn cho website và thông tin của khách hàng.
Bước 1 – Cài đặt Certbot
Certbot sẽ đề xuất người dùng sử dụng snap package để cài đặt phần mềm này. Các gói này hầu như tương thích với mọi phiên bản Linux. Tuy nhiên để quản lý chúng hiệu quả thì người dùng sẽ phải cài đặt công cụ snapd trước. Trước hết, hãy đảm bảo snap core của bạn đã được cập nhật phiên bản mới nhất với lệnh:
sudo snap install core; sudo snap refresh core
Trong trường hợp máy chủ đang cài Certbot phiên bản cũ thì cần xoá đi trước khi thực hiện các bước tiếp theo:
sudo apt remove certbot
Sau đó, tiến hành cài đặt certbot
bằng câu lệnh:
sudo snap install --classic certbot
Cuối cùng, cần liên kết lệnh certbot
từ thư mục cài đặt snap tới đường dẫn của bạn. Điều này sẽ giúp việc khởi chạy diễn ra nhanh chóng chỉ bằng cách gõ certbot
. Snaps thường ít xâm phạm nên chúng sẽ không gây ảnh hưởng tới các package khác trong hệ thống:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Sau khi cài đặt được Certbot, hãy tới với bước tiếp theo để có thể khởi chạy ứng dụng này.
Bước 2 – Khởi chạy Certbot
Certbot cần phải đáp ứng các yêu cầu về mã hoá từ Let’s Encrypt API để chứng minh quyền sở hữu của bạn với tên miền đã cung cấp ở phần đầu. Bạn có thể sử dụng cả 2 port 80
(HTTP) và 443
(HTTPS) để thực hiện những yêu cầu này. Mở cổng thích hợp với lệnh:
sudo ufw allow 443
Output
Rule added
Rule added (v6)
Lúc này bạn đã có thể khởi chạy Certbot để lấy chứng chỉ SSL. Tùy chọn --standalone
sẽ phù hợp nhất để báo cho Certbot thực hiện các yêu cầu mã hóa bằng chính các web server đã được tích hợp sẵn. Sau đó dùng cờ -d
để chỉ định một hoặc nhiều tên miền muốn yêu cầu chứng chỉ SSL:
sudo certbot certbonly --standalone -d your_domain
Sau khi chạy lệnh, bạn sẽ nhận được yêu cầu nhập địa chỉ email và chấp nhận các điều khoản. Thực hiện xong các bước theo yêu cầu, màn hình sẽ hiện lên thông báo cập nhật trạng thái thành công và nơi lưu trữ chứng chỉ:
Output
IMPORTANT NOTES:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-02-10.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
----------------------------------------------------------------------------------------------
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
Tiếp theo mình sẽ hướng dẫn bạn về chức năng các file của chứng chỉ vừa tải về ở phần trên và cách kiểm tra chúng.
Bước 3 – Cấu hình ứng dụng
Việc thực hiện cấu hình SSL cho ứng dụng nằm ngoài phạm vi của bài viết này bởi từng ứng dụng sẽ có những yêu cầu khác nhau về cấu hình. Tuy nhiên, bạn vẫn nên kiểm tra lại những file được Certbot download về bằng lệnh ls
. Lệnh này sẽ giúp liệt kê các thư mục chứa khoá (key) và chứng chỉ (certificate):
sudo ls /etc/letsencrypt/live/your_domain
Output
cert.pem chain.pem fullchain.pem privkey.pem README
File README
đóng vai trò chứa các thông tin cần thiết của từng file trong thư mục. Tuy nhiên trong hầu hết các tình huống bạn sẽ chỉ cần để ý tới hai file dưới đây:
privkey.pem
: File này sẽ chứa các khoá riêng tư (private key) nên cần phải được đảm bảm giữ an toàn, bí mật tuyệt đối. Đó là lý do tại sao thư mục/etc/letsencrypt
thường bị hạn chế các quyền rất nghiêm ngặt và chỉ có root user mới được phép truy cập vào. Trong một số phần mềm, file này sẽ có một tên gọi khác, ví dụ như:ssl-certificate-key
hayssl-certificate-key-file
.fullchain.pem
: File chứa các chứng chỉ Intermediate Certificate. Hầu hết các phần mềm sẽ lưu chứng chỉ tại file này dưới những cái tên như ‘SSL-certificate’.
Một số phần mềm sẽ lưu chứng chỉ bằng định dạng khác, tại một thư mục khác với nhiều quyền người dùng. Tốt nhất là bạn hãy giữ nguyên các file trong thư mục letsencrypt
và không thực hiện bất cứ thay đổi về quyền nào. Trong trường hợp việc thay đổi các đặc quyền là bắt buộc thì bạn sẽ cần tới các đoạn script để thực hiện di chuyển và thay đổi quyền đối với từng file. Và chúng phải được chạy mỗi lần Certbot thực hiện gia hạn chứng chỉ.
Bước 4 – Quản lý thao tác tự động gia hạn chứng chỉ
Các chứng chỉ của Let’s Encrypt chỉ giới hạn trong vòng 90 ngày với mục đích khuyến khích người dùng tự động hoá thao tác gia hạn chứng chỉ. certbot
package được cài đặt ở bước đầu sẽ thực hiện yêu cầu này bằng cách thêm các đoạn script gia hạn vào thư mục /etc/cron.d
. Đoạn script này sẽ được chạy 2 lần 1 ngày và sẽ thực hiện gia hạn bất cứ chứng chỉ nào chỉ còn hạn sử dụng 30 ngày.
Bên cạnh việc tự động gia hạn chứng chỉ, bạn sẽ còn cần chạy thêm các tác vụ khác. Cần phải khởi động hoặc tải lại máy chủ để cập nhật chứng chỉ mới. Đồng thời như đã đề cập ở bước 3, bạn sẽ cần thao tác với các tệp chứng chỉ để giúp chúng tương thích với phần mềm đang sử dụng. Certbot có cung cấp một tùy chọn để giải quyết vấn đề này, đó là renew_hook
.
Để thêm renew_hook
, bạn cần thực hiện một số thay đổi đối với file cấu hình gia hạn của Certbot. Trong đó Certbot đã ghi lại toàn bộ các chi tiết trong lần nạp chứng chỉ đầu tiên và sẽ thực hiện lại các tuỳ chọn đã được ghi lại này trong quá trình này. Mở file config bằng câu lệnh:
sudo nano /etc/letsencrypt/renewal/your_domain.conf
Quan sát file text vừa mở sẽ thấy rất nhiều các tuỳ chọn. Lúc này, bạn có thể thêm hook vào dòng cuối cùng để tại lại bất cứ dịch vụ nào để cập nhật chứng chỉ vừa gia hạn:
renew_hook = systemctl reload your_service
Tuỳ thuộc vào tình huống cụ thể mà có thể thay đổi nội dung của câu lệnh. Thông thường đối với hệ điều hành Ubuntu sẽ sử dụng lệnh systemctl
để tái khởi động một dịch vụ. Lưu rồi thoát file, tiếp đến chạy lệnh dưới đây để đảm bảo mọi thứ đã ổn:
sudo certbot renew --dry-run
Vietnix – Sự lựa chọn tối ưu cho dịch vụ VPS
Với 12 năm kinh nghiệm trong lĩnh vực cung cấp giải pháp lưu trữ, Vietnix đã triển khai thành công hơn 100.000 dịch vụ và đạt được tỷ lệ hài lòng khách hàng lên đến 97%. Sở hữu đội ngũ hơn 80 chuyên gia giàu kinh nghiệm và tâm huyết, Vietnix cam kết mang đến cho bạn giải pháp VPS mạnh mẽ, ổn định và hiệu suất cao với mức giá tối ưu. Vietnix không chỉ cung cấp hạ tầng vững chắc cho doanh nghiệp phát triển mà còn đồng hành cùng bạn trên hành trình chinh phục thành công. Hãy trải nghiệm dịch vụ VPS chất lượng hàng đầu Việt Nam cùng Vietnix ngay hôm nay.
Thông tin liên hệ:
- Hotline: 18001093.
- Email: sales@vietnix.com.vn.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/.
Trên đây là toàn bộ hướng dẫn cách lấy chứng chỉ SSL trên Ubuntu 20.04 bằng Certbot ở chế độ standalone mode và tự động gia hạn chứng chỉ SSL (Let’s Encrypt) mà mình muốn chia sẻ tới bạn. Nếu còn thắc mắc trong quá trình thực hiện, bạn hãy để lại bình luận bên dưới để mình có thể giải đáp và hỗ trợ nhanh chóng nhất. Ngoài ra, nếu bạn muốn tìm hiểu chi tiết về các thao tác khác trên máy chủ Ubuntu thì có thể tham khảo thêm những bài viết dưới đây của mình:
Mọi người cũng xem: