Hướng dẫn cách lấy chứng chỉ SSL trên Ubuntu 20.04 bằng Certbot (Standalone mode)

Những điểm chính

 

  • Giới thiệu Certbot: Hiểu Certbot là gì, cách công cụ này hoạt động và lý do được sử dụng phổ biến để cấp chứng chỉ SSL từ Let's Encrypt.

 

  • Yêu cầu trước khi thực hiện: Chuẩn bị máy chủ Ubuntu 20.04, tài khoản có quyền sudo, tường lửa đã cấu hình, tên miền hoạt động và đảm bảo cổng 80 hoặc 443 không bị dịch vụ khác chiếm dụng.

 

  • Các bước lấy chứng chỉ SSL bằng Certbot: Bao gồm cài đặt Certbot, yêu cầu cấp chứng chỉ, kiểm tra các tệp SSL và cấu hình tự động gia hạn chứng chỉ.

 

Giới thiệu về Certbot

 

Certbot là công cụ mã nguồn mở do Let's Encrypt phát triển, hỗ trợ tự động cấp phát, xác thực và gia hạn chứng chỉ SSL/TLS cho tên miền. Ngoài khả năng tạo chứng chỉ, Certbot còn hỗ trợ cấu hình trực tiếp trên nhiều web server như Apache và Nginx.

 

Trong bài viết này, mình sẽ hướng dẫn cách sử dụng Certbot ở chế độ Standalone. Phương pháp này phù hợp khi bạn muốn cấp SSL cho các dịch vụ không sử dụng Apache hoặc Nginx, chẳng hạn như mail server, RabbitMQ hoặc các ứng dụng chạy độc lập.

 

Bài viết tập trung vào quá trình lấy chứng chỉ SSL và thiết lập cơ chế tự động gia hạn. Việc cấu hình SSL cho từng ứng dụng cụ thể sẽ không được đề cập vì mỗi phần mềm sẽ có cách triển khai khác nhau.

 

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, hãy đảm bảo hệ thống đã đáp ứng các điều kiện sau:

 

  • Một máy chủ chạy Ubuntu 20.04.

 

  • Tài khoản người dùng thông thường có quyền sudo.

 

  • Đã thiết lập tường lửa cơ bản.

 

  • Có một tên miền đã trỏ đúng về địa chỉ IP của máy chủ. Trong bài viết sẽ sử dụng tên miền mẫu là your_domain.

 

  • Các cổng 80443 không được ứng dụng khác sử dụng. Nếu web server đang chạy trên hai cổng này thì nên sử dụng chế độ webroot hoặc phương thức xác thực khác của Certbot.

 

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

 

Hiện nay, Certbot khuyến nghị cài đặt thông qua Snap vì đây là phương pháp luôn nhận được các bản cập nhật mới nhất.

 

Trước tiên, cập nhật gói Snap Core:

 

sudo snap install core

sudo snap refresh core

 

Nếu hệ thống đã cài đặt Certbot bằng APT trước đó, hãy gỡ bỏ để tránh xung đột:

 

sudo apt remove certbot

 

Tiếp theo, cài đặt Certbot:

 

sudo snap install --classic certbot

 

Sau khi hoàn tất, tạo liên kết để có thể sử dụng lệnh certbot trực tiếp:

 

sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

Sau khi cài đặt xong, bạn có thể chuyển sang bước lấy chứng chỉ SSL.

 

Bước 2 – Khởi chạy Certbot

 

Để cấp chứng chỉ SSL, Let's Encrypt cần xác minh rằng bạn sở hữu tên miền đã khai báo. Quá trình xác thực sẽ sử dụng cổng 80 (HTTP) hoặc 443 (HTTPS).

 

Nếu đang sử dụng UFW, hãy mở cổng cần thiết:

 

sudo ufw allow 443

 

Kết quả:

 

Rule added

Rule added (v6)

 

Tiếp theo, sử dụng chế độ Standalone để yêu cầu cấp chứng chỉ:

 

sudo certbot certonly --standalone -d your_domain

 

Trong quá trình thực hiện, Certbot sẽ yêu cầu:

 

  • Nhập địa chỉ email.

 

  • Đồng ý với các điều khoản sử dụng của Let's Encrypt.

 

Nếu quá trình xác thực thành công, bạn sẽ nhận được thông báo tương tự:

 

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.

 

Sau khi chứng chỉ được tạo thành công, bước tiếp theo là kiểm tra các tệp SSL và cấu hình cho ứng dụng sử dụng.

 

Bước 3 – Cấu hình ứng dụng

 

Mỗi ứng dụng sẽ có cách khai báo chứng chỉ SSL khác nhau nên phần cấu hình chi tiết sẽ không được đề cập trong bài viết này.

 

Để kiểm tra các tệp mà Certbot vừa tạo, sử dụng lệnh:

 

sudo ls /etc/letsencrypt/live/your_domain

 

Kết quả:

 

cert.pem

chain.pem

fullchain.pem

privkey.pem

README

 

Trong thư mục này, file README sẽ mô tả chức năng của từng tệp. Tuy nhiên, khi cấu hình SSL, bạn thường chỉ cần quan tâm đến:

 

  • privkey.pem: Chứa khóa riêng (Private Key). Đây là tệp quan trọng nhất và cần được bảo vệ tuyệt đối. Theo mặc định, chỉ tài khoản root mới có quyền truy cập. Một số phần mềm có thể gọi tệp này là ssl-certificate-key hoặc ssl-certificate-key-file.

 

  • fullchain.pem: Chứa chứng chỉ SSL cùng toàn bộ chuỗi chứng chỉ trung gian (Intermediate Certificate). Phần lớn các ứng dụng sẽ sử dụng tệp này làm chứng chỉ chính.

 

Bạn nên giữ nguyên toàn bộ các tệp trong thư mục /etc/letsencrypt và hạn chế thay đổi quyền truy cập. Nếu ứng dụng yêu cầu lưu chứng chỉ tại vị trí khác, hãy sử dụng script tự động sao chép và cập nhật mỗi khi Certbot gia hạn chứng chỉ.

 

Bước 4 – Quản lý thao tác tự động gia hạn chứng chỉ

 

Chứng chỉ của Let's Encrypt chỉ có thời hạn 90 ngày. Vì vậy, Certbot sẽ tự động tạo tác vụ gia hạn thông qua các script trong thư mục:

 

/etc/cron.d

 

Các script này sẽ được thực thi hai lần mỗi ngày và chỉ tiến hành gia hạn khi chứng chỉ còn dưới 30 ngày trước khi hết hạn.

 

Trong nhiều trường hợp, sau khi gia hạn thành công bạn sẽ cần tải lại dịch vụ để ứng dụng sử dụng chứng chỉ mới. Certbot hỗ trợ điều này thông qua tùy chọn renew_hook.

 

Mở file cấu hình gia hạn:

 

sudo nano /etc/letsencrypt/renewal/your_domain.conf

 

Thêm dòng sau vào cuối file:

 

renew_hook = systemctl reload your_service

 

Thay your_service bằng tên dịch vụ đang sử dụng SSL, ví dụ như Nginx, Apache hoặc RabbitMQ.

 

Lưu lại cấu hình, sau đó kiểm tra quá trình gia hạn bằng chế độ mô phỏng:

 

sudo certbot renew --dry-run

 

Nếu lệnh thực thi thành công mà không xuất hiện lỗi, đồng nghĩa cơ chế tự động gia hạn chứng chỉ SSL đã được thiết lập chính xác và sẽ hoạt động khi chứng chỉ sắp hết hạn.

 HỖ TRỢ TRỰC TUYẾN