Cấu hình HTTPS cho trang web chỉ trong vài phút với Certbot

Cấu hình HTTPS cho trang web chỉ trong vài phút với Certbot

Bạn đã bao giờ gặp cảnh trình duyệt hiển thị cảnh báo "không an toàn"? Bạn cảm thấy phiền phức bởi quy trình xin chứng chỉ SSL? Bài viết này sẽ hướng dẫn bạn cách sử dụng Certbot để tự động cấu hình HTTPS trong ba bước đơn giản, không cần thao tác phức tạp và nâng cao bảo mật cho trang web của bạn.

Sau khi đọc bài viết này, bạn sẽ nắm được:

  • Các bước cụ thể để triển khai chứng chỉ HTTPS trong vòng vài phút.
  • Cách thiết lập tự động gia hạn chứng chỉ.
  • Các phương án thích ứng với các môi trường máy chủ khác nhau.
  • Kỹ thuật khắc phục nhanh các vấn đề thường gặp.

Giới thiệu về Certbot

Certbot là công cụ mã nguồn mở do Tổ chức Bảo vệ Điện tử (EFF) phát triển. Nó có khả năng lấy chứng chỉ SSL/TLS miễn phí từ Let's Encrypt và tự động cấu hình chúng trên máy chủ web. Theo tài liệu README của dự án, Certbot hỗ trợ các máy chủ phổ biến như Apache, Nginx và tuân thủ giao thức ACME (RFC 8555).

Những ưu điểm chính của Certbot bao gồm:

  • Tự động hóa hoàn toàn: Từ việc yêu cầu chứng chỉ đến cấu hình máy chủ đều diễn ra tự động.
  • Miễn phí và đáng tin cậy: Sử dụng chứng chỉ miễn phí từ Let's Encrypt với thời hạn 90 ngày nhưng hỗ trợ gia hạn tự động.
  • Hỗ trợ đa nền tảng: Tương thích với Linux, Windows, macOS và nhiều hệ điều hành khác.
  • Các plugin phong phú: Cung cấp hơn mười plugin DNS hỗ trợ dịch vụ giải quyết tên miền khác nhau.

Chuẩn bị trước khi bắt đầu

Trước khi khởi đầu, hãy đảm bảo rằng máy chủ của bạn đáp ứng các điều kiện sau:

Yêu cầu Mô tả
Quyền truy cập máy chủ Cần quyền root hoặc quản trị viên.
Kết nối mạng Máy chủ phải kết nối được với internet.
Cổng mở Cổng 80 (HTTP) phải mở để xác thực tên miền.
Giải quyết tên miền Tên miền cần được giải quyết đúng đến IP của máy chủ.

Cài đặt Certbot

Certbot cung cấp nhiều cách cài đặt, khuyến nghị sử dụng Snap (cross-platform) hoặc quản lý gói hệ thống. Dưới đây là lệnh cài đặt dành cho các phiên bản Linux phổ biến:

Ubuntu/Debian

sudo apt update
sudo apt install certbot python3-certbot-apache  # Đối với người dùng Apache
# Hoặc
sudo apt install certbot python3-certbot-nginx   # Đối với người dùng Nginx

CentOS/RHEL

sudo dnf install certbot python3-certbot-apache  # Đối với người dùng Apache
# Hoặc
sudo dnf install certbot python3-certbot-nginx   # Đối với người dùng Nginx

Cài đặt bằng Snap (Khuyến nghị)

Đối với các hệ thống Linux khác, khuyến nghị sử dụng Snap để có phiên bản mới nhất:

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

Tham khảo thêm các tùy chọn cài đặt khác như Docker container hay gói cài đặt Windows trong tài liệu chính thức.

Thiết lập HTTPS nhanh chóng

Máy chủ Apache

Thực hiện lệnh sau, Certbot sẽ tự động lấy chứng chỉ và cấu hình Apache:

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

Máy chủ Nginx

Tương tự, người dùng Nginx chạy lệnh sau:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Giải thích các lệnh

Tham số Vai trò
--apache/--nginx Chỉ định loại máy chủ web, tự động cấu hình SSL.
-d Chỉ định tên miền, có thể thêm nhiều tên miền.
--email Đặt địa chỉ email thông báo khi chứng chỉ sắp hết hạn.

Sau khi chạy lệnh, Certbot sẽ hướng dẫn bạn qua một số bước đơn giản:

  1. Nhập địa chỉ email (để nhận thông báo khi chứng chỉ sắp hết hạn).
  2. Đồng ý với điều khoản dịch vụ.
  3. Chọn bật chuyển hướng tự động từ HTTP sang HTTPS.

Khi hoàn tất, truy cập trang web của bạn, biểu tượng khóa an toàn sẽ xuất hiện trong thanh địa chỉ của trình duyệt.

Kiểm tra kết quả cấu hình

Sau khi cấu hình, bạn có thể kiểm tra bằng các cách sau:

  1. Kiểm tra qua trình duyệt: Truy cập trang web, biểu tượng khóa phải hiển thị.
  2. Kiểm tra qua dòng lệnh: Sử dụng curl để kiểm tra header phản hồi.
curl -I https://yourdomain.com

Nếu thành công, bạn sẽ thấy header Strict-Transport-Security.

  1. Xem thông tin chứng chỉ: Sử dụng lệnh Certbot để kiểm tra chứng chỉ đã cài đặt.
sudo certbot certificates

Ví dụ đầu ra:

Found the following certificates:
  Certificate Name: yourdomain.com
    Domains: yourdomain.com, www.yourdomain.com
    Expiry Date: 2025-01-20 12:34:56+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/yourdomain.com/privkey.pem

Cấu hình gia hạn tự động

Chứng chỉ Let's Encrypt có hiệu lực 90 ngày, Certbot đã thiết lập sẵn chức năng gia hạn tự động. Bạn có thể kiểm tra bằng các lệnh sau:

sudo systemctl status certbot.timer  # Hệ thống Systemd
# Hoặc
sudo grep certbot /etc/crontab       # Hệ thống Cron

Kiểm tra chức năng gia hạn:

sudo certbot renew --dry-run

Lưu ý: Nếu bạn thay đổi quy tắc tường lửa, hãy đảm bảo cho phép Certbot truy cập máy chủ Let's Encrypt khi gia hạn.

Ứng dụng nâng cao

Môi trường không có máy chủ (Chế độ Webroot)

Nếu máy chủ của bạn không chạy Apache/Nginx, bạn có thể sử dụng chế độ Webroot:

sudo certbot certonly --webroot -w /var/www/html -d yourdomain.com

Trong đó /var/www/html là đường dẫn gốc của website.

Chứng chỉ wildcard

Để tạo chứng chỉ wildcard (*.yourdomain.com), bạn cần sử dụng phương pháp xác thực DNS. Ví dụ với nhà cung cấp DNS cụ thể:

sudo certbot certonly --dns-provider \
  --dns-provider-credentials ~/.secrets/certbot/provider.ini \
  -d yourdomain.com -d *.yourdomain.com

Lệnh quản lý chứng chỉ

Lệnh Hàm năng
certbot certificates Danh sách tất cả chứng chỉ.
certbot revoke --cert-name yourdomain.com Hủy bỏ chứng chỉ.
certbot delete --cert-name yourdomain.com Xóa chứng chỉ.
certbot renew --cert-name yourdomain.com Gia hạn chứng chỉ cụ thể.

Giải quyết vấn đề thường gặp

Xung đột cổng

Nếu cổng 80 bị chiếm dụng, Certbot sẽ không thể hoàn thành quá trình xác thực. Hãy tạm dừng dịch vụ đang chiếm dụng:

# Apache
sudo systemctl stop apache2
# Nginx
sudo systemctl stop nginx

# Sau khi hoàn tất, khởi động lại
sudo systemctl start apache2/nginx

Gia hạn chứng chỉ thất bại

Kiểm tra log gia hạn để tìm nguyên nhân:

sudo tail -f /var/log/letsencrypt/letsencrypt.log

Nguyên nhân phổ biến và cách khắc phục:

  • Hạn chế tường lửa: Đảm bảo cho phép truy cập outbound qua cổng 443.
  • Thay đổi giải quyết tên miền: Quá trình gia hạn yêu cầu tên miền giữ nguyên trạng thái giải quyết.
  • Quyền truy cập tệp: Đảm bảo Certbot có quyền đọc thư mục website.

Cấu hình SSL thủ công

Nếu cấu hình tự động thất bại, bạn có thể cấu hình máy chủ web thủ công. Ví dụ với Nginx, chỉnh sửa tệp cấu hình:

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    # Tham số SSL (cấu hình khuyến nghị)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
}

Thẻ: HTTPS certbot linux

Đăng vào ngày 25 tháng 6 lúc 18:46