📌 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 WebGUI →
System
→Package Manager
→Available Packages
. - Tìm “acme” và nhấn Install.
Bước 2: Đăng ký tài khoản ACME (Let’s Encrypt Account Keys)
Services
→Acme Certificates
→Account 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 Certificates
→Certificates
→Add
.- 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 (System
→ Advanced
→ Admin 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 Name
và Description
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ệ.
- Chọn:
- 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.
- Nếu bạn chưa có khóa hãy nhấn
📌 Lưu ý cả Let’s Encrypt Staging ACME v2 và Let’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: Services
→ Acme
→ Certificates
, 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:
hoặcdocs
.hoanghd.comwildcard-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.
- Nhập từng domain cụ thể (
- Name: Đặt tên để dễ nhận diện (VD:
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).
- DNS-01: Dùng nếu bạn muốn cấp chứng chỉ 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ỉ.
- DNS Provider: Chọn nhà cung cấp DNS bạn đang dùng (
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 (
Services
→Acme
→Certificates
→+ 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
- Domain:
- Name:
- 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.
- Nếu đang chạy nginx, đường dẫn có thể là:swiftCopyEdit
- 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

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 (
System
→Advanced
→Admin 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.