Monday, February 24, 2025

Tự động cấp chứng chỉ với ACME trong Pfsense

-

📌 ACME trong pfSense là gì?

ACME (Automated Certificate Management Environment) trong pfSense là một gói (package) giúp tự động cấp và gia hạn chứng chỉ SSL/TLS từ Let’s Encrypt mà không cần thao tác thủ công.

👉 Nó giúp bạn miễn phí tạo và quản lý chứng chỉ SSL để sử dụng cho pfSense WebGUI, HAProxy, VPN, hoặc dịch vụ nội bộ.

🛠 Tính năng chính của ACME trên pfSense

✔️ Tự động cấp & gia hạn SSL với Let’s Encrypt.
✔️ Nhiều phương thức xác thực DNS & HTTP (Webroot, Standalone, DNS API, RFC 2136…).
✔️ Wildcard SSL (*.yourdomain.com) để bảo vệ nhiều subdomains với một chứng chỉ duy nhất.
✔️ Tích hợp với HAProxy để triển khai HTTPS Reverse Proxy.
✔️ Tự động cập nhật chứng chỉ mà không cần thao tác thủ công.

📝 Quy trình triển khai ACME trên pfSense

Bước 1: Cài đặt ACME Package

  • Vào pfSense WebGUISystemPackage ManagerAvailable Packages.
  • Tìm “acme” và nhấn Install.

Bước 2: Đăng ký tài khoản ACME (Let’s Encrypt Account Keys)

  • ServicesAcme CertificatesAccount Keys.
  • Nhấn Add → Chọn Let’s Encrypt Production.
  • Nhập thông tin và Register để lấy tài khoản.

Bước 3: Tạo & Xác thực Domain

  • Acme CertificatesCertificatesAdd.
  • Nhập Tên chứng chỉ (VD: hoanghd.com).
  • Chọn Xác thực (HTTP-01, DNS-01, RFC 2136…).
  • Nhấn Issue/Renew để lấy chứng chỉ từ Let’s Encrypt.

Bước 4: Áp dụng chứng chỉ vào dịch vụ

✔️ WebGUI (SystemAdvancedAdmin Access).
✔️ HAProxy để Reverse Proxy SSL.
✔️ VPN (OpenVPN, IPsec) cho bảo mật kết nối.

📌 Chi tiết cách cài đặt ACME Package.

System / Package Manager / Available Packages

Cài đặt acme

Thấy thông báo dưới đây cho biết bạn đã cài đặt acme thành công.

This file has been added to automatically load the installed extension:
/usr/local/etc/php/ext-20-ssh2.ini.sample
>>> Cleaning up cache... done.
Success

Hình ảnh cài đặt thành công.

📌 Cách cấu hình ACME chi tiết.

Vào Services/Acme Certificates.

Qua tab Account Keys.

Account Key này sẽ dùng chung cho nhiều domain, nên trường NameDescription nên đặt tên mô tả chung thay vì chỉ đặt theo một domain cụ thể.

Điên thông tin.

  • Name (nhập tên để dễ quản lý key ACME): LetsEncrypt-ACME-Account.
  • Description (Mô tả ngắn gọn về key này để dễ nhớ): ACME Account for issuing certificates via Let’s Encrypt
  • ACME Server (Server ACME):
    • Chọn:Let's Encrypt Staging ACME v2 (For TESTING purposes) nếu bạn muốn thử nghiệm.
    • Nếu muốn cấp chứng chỉ chính thức, chọn: Let's Encrypt Production ACME v2
    • Lưu ý:
      • Dùng Staging để tránh giới hạn cấp chứng chỉ (rate limit).
    • Khi mọi thứ hoạt động tốt, đổi sang Production để nhận chứng chỉ hợp lệ.
  • E-Mail Address (Địa chỉ Email): Nhập email của bạn để nhận thông báo khi chứng chỉ sắp hết hạn.
  • Account Key (Khóa tài khoản):
    • Nếu bạn chưa có khóa hãy nhấn Create new account key để tạo. Nhấn “Register ACME account key” để đăng ký với Let’s Encrypt.
    • Nếu bạn đã có khóa, hãy nhập khóa hiện tại.

📌 Lưu ý cả Let’s Encrypt Staging ACME v2Let’s Encrypt Production ACME v2 đều miễn phí hoàn toàn.

🔹 Sự khác biệt giữa hai gói này:

1️⃣ Staging ACME v2 (Dùng để TEST)

  • Không giới hạn số lần yêu cầu chứng chỉ.
  • Dùng để kiểm tra cấu hình trước khi cấp chứng chỉ thật.
  • Sử dụng chứng chỉ KHÔNG ĐƯỢC TIN CẬY bởi trình duyệt (vì nó dùng CA trung gian thử nghiệm).

2️⃣ Production ACME v2 (Dùng thực tế)

  • Có giới hạn số lần cấp chứng chỉ (50 chứng chỉ mỗi tuần cho cùng một domain).
  • Chứng chỉ được trình duyệt tin cậy, dùng cho website thực tế.

👉 Nếu bạn đang triển khai thật, hãy chọn “Production ACME v2”.
👉 Nếu đang test cấu hình, nên dùng “Staging ACME v2” để tránh bị giới hạn request. 🚀

📌 Kết quả nếu đăng ký thành công, sẽ có dấu ✅. Nếu thất bại, kiểm tra log tại:

/tmp/acme/_registerkey/acme_issuecert.log

Tham khảo hình nhé.

Kết quả khi lưu lại.

Sau khi đã tạo Account Key thành công, bước tiếp theo là tạo và quản lý chứng chỉ ACME để cấp SSL cho domain của bạn. Dưới đây là quy trình tiếp theo trên pfSense:

Vào menu: ServicesAcmeCertificates, nhấn + Add để thêm chứng chỉ mới.

Thêm chứng chỉ mới:

  • Điền thông tin chứng chỉ:
    • Name: Đặt tên để dễ nhận diện (VD: docs.hoanghd.com hoặc wildcard-hoanghd).
    • Description: Mô tả ngắn về chứng chỉ (VD: SSL for docs.hoanghd.com).
    • ACME Account: Chọn tài khoản ACME vừa tạo (LetsEncrypt-ACME-Account).
    • Domain SAN list:
      • Nhập từng domain cụ thể (docs.hoanghd.com, wiki.hoanghd.com).
      • Hoặc sử dụng Wildcard (*.hoanghd.com) nếu dùng DNS-01 validation.

Chọn phương thức xác thực (Challenge Type):

  • Chọn phương thức xác thực (Validation Method):
    • DNS-01: Dùng nếu bạn muốn cấp chứng chỉ wildcard *.hoanghd.com.
    • HTTP-01: Dùng nếu domain có thể truy cập trực tiếp qua web server (không dùng được cho wildcard).
  • Nếu chọn DNS-01, cần thiết lập API để pfSense có thể tự động tạo bản ghi DNS.
    • DNS Provider: Chọn nhà cung cấp DNS bạn đang dùng (Cloudflare, Route53, GoDaddy, v.v.).
    • Điền API key để pfSense có thể tự động tạo TXT record xác minh chứng chỉ.

Trường hợp của mình sẽ sử dụng xác thực bằng Webroot (HTTP-01)

👉 Dùng khi: docs.hoanghd.com đã chạy trên một server web (ngang với Nginx, Apache).

Bước 1: Chọn Webroot Local Folder

  • Trong pfSense ACME, tạo chứng chỉ mới (ServicesAcmeCertificates+ Add).
  • Điền thông tin:
    • Name: docs-hoanghd
    • Description: SSL for docs.hoanghd.com
    • ACME Account: Chọn tài khoản ACME đã tạo trước đó.
    • Domain SAN List:
      • Domain: docs.hoanghd.com
      • Method: Webroot local folder
  • Webroot Path:
    • Nếu đang chạy nginx, đường dẫn có thể là:swiftCopyEdit/usr/local/www/
    • Nếu đang chạy Apache, có thể là: /var/www/html/
    • Hoặc đường dẫn thư mục chứa docs.hoanghd.com trên web server.
  • Save & Issue
    • Nhấn Save.
    • Nhấn Issue/Renew để Let’s Encrypt cấp chứng chỉ.
    • Nếu thành công, chứng chỉ sẽ được lưu trong pfSense.

Nhấn Save.

Hình ảnh SSL đã được gia hạn.

Lưu và Cấp chứng chỉ.

  • Nhấn Save để lưu cấu hình chứng chỉ.
  • Nhấn Issue/Renew để Let’s Encrypt cấp chứng chỉ.
  • Kiểm tra trạng thái cấp chứng chỉ tại Status Log (/tmp/acme/_registerkey/acme_issuecert.log).

Sau khi lấy chứng chỉ thành công, bạn có thể kiểm tra trong System → Cert Manager → Certificates.

Cấu hình sử dụng chứng chỉ.

Sau khi có chứng chỉ SSL, bạn có thể:

  • Áp dụng nó vào pfSense Web GUI (SystemAdvancedAdmin Access).
  • Dùng nó trong HAProxy để proxy HTTPS cho các dịch vụ như Grafana, Wiki, Prometheus.
  • Xuất chứng chỉ và cài đặt trên server/ngược dòng cần sử dụng SSL.

🚀 Lợi ích của ACME trên pfSense

Không tốn phí – Chứng chỉ Let’s Encrypt miễn phí.
Tự động hóa – Không cần gia hạn thủ công.
Hỗ trợ Wildcard SSL – Một chứng chỉ cho nhiều subdomains.
Tích hợp với pfSense & HAProxy – Dễ dàng triển khai HTTPS.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories