SSL wildcard miễn phí với Let's Encrypt (DNS-01) và DNSSEC
Cách lấy SSL wildcard miễn phí từ Let's Encrypt bằng xác thực DNS-01, tự động gia hạn, và dùng an toàn cùng DNSSEC và bản ghi CAA.

Ý chính
- Let's Encrypt cấp chứng chỉ wildcard miễn phí, nhưng chỉ qua xác thực DNS-01, cần bản ghi TXT tại _acme-challenge cho mỗi lần cấp.
- Wildcard chỉ phủ một cấp tên miền con và không phủ tên miền gốc, nên hãy xin cả example.com lẫn *.example.com.
- Bắt buộc phải tự động hóa: thời hạn giảm còn 64 ngày từ tháng 2/2027 và 45 ngày từ tháng 2/2028, thời gian dùng lại xác thực cũng giảm.
- Let's Encrypt kiểm tra DNSSEC ở mọi truy vấn, nên DNSSEC cấu hình sai sẽ chặn việc cấp chứng chỉ; hãy sửa bản ghi DS trước khi đổ lỗi cho ACME client.
Có, bạn lấy được SSL wildcard miễn phí từ Let's Encrypt, nhưng chỉ qua xác thực DNS-01: ACME client phải tạo một bản ghi TXT tại _acme-challenge.example.com, Let's Encrypt tra bản ghi này rồi mới cấp *.example.com. Trên thực tế, client cần quyền gọi API của nhà cung cấp DNS, hoặc DNS phải chạy ngay trên server có client. Nếu zone được ký DNSSEC, chữ ký phải hợp lệ, vì Let's Encrypt kiểm tra DNSSEC ở mọi truy vấn và từ chối cấp khi xác thực thất bại.
Bài SSL miễn phí với Let's Encrypt đã nói về chứng chỉ thường, Certbot và giới hạn tần suất. Bài này tập trung vào những gì riêng của wildcard: DNS-01 hoạt động thế nào, tự động hóa an toàn ra sao, thay đổi thời hạn sắp tới ảnh hưởng gì, và DNSSEC cùng bản ghi CAA liên quan thế nào.
Khi nào bạn cần chứng chỉ wildcard?
Chứng chỉ wildcard cho *.example.com hợp lệ với shop.example.com, staging.example.com và mọi tên khác ở ngay dưới example.com một cấp. Nó hợp lý khi:
- bạn tạo tên miền con thường xuyên, ví dụ mỗi khách hàng một subdomain trong ứng dụng SaaS (
acme.ungdung.vn), hoặc mỗi website staging một subdomain; - tên miền con được phần mềm tạo ra trước khi kịp thêm vào chứng chỉ;
- bạn không muốn tên từng subdomain xuất hiện trong log Certificate Transparency công khai, vì chỉ
*.example.comđược ghi lại.
Không phải lúc nào wildcard cũng tốt hơn. Khóa riêng của wildcard bảo vệ mọi subdomain, nên nếu lộ từ một server thì tất cả đều bị ảnh hưởng. Nếu bạn chỉ có ba subdomain cố định, một chứng chỉ thường liệt kê ba tên đó, xác thực qua HTTP, đơn giản hơn và không cần quyền vào DNS.
Wildcard không phủ những gì
Hai quy tắc hay khiến người dùng nhầm:
| Tên | *.example.com có phủ không? |
|---|---|
www.example.com, shop.example.com |
Có |
example.com (tên miền gốc) |
Không, cần thêm tên này |
a.b.example.com (hai cấp) |
Không, cần *.b.example.com |
Wildcard chỉ khớp đúng một nhãn, theo định nghĩa cho TLS trong RFC 9525. Vì vậy hầu hết cấu hình xin hai tên trên cùng một chứng chỉ: example.com và *.example.com.
Xác thực DNS-01 hoạt động thế nào?
Trang challenge types của Let's Encrypt là mô tả chính thức. Tóm tắt:
- ACME client xin chứng chỉ cho
*.example.com. - Let's Encrypt đưa cho client một token. Client tính ra một giá trị từ token và khóa tài khoản.
- Client công bố giá trị đó dưới dạng bản ghi TXT tại
_acme-challenge.example.com. - Let's Encrypt truy vấn DNS authoritative của bạn. Nếu giá trị TXT khớp, chứng chỉ được cấp.
- Client xóa bản ghi TXT.
HTTP-01 "cannot be used to issue wildcard certificates", nên không có cách nào tránh DNS. Cùng trang đó liệt kê ưu nhược điểm. DNS-01 dùng được khi cổng 80 đóng hoặc web server không public, và khi có nhiều web server sau một tên. Ngược lại, lưu thông tin đăng nhập API DNS trên web server là rủi ro, một số nhà cung cấp DNS không có API, và một số API không báo khi thay đổi đã tới mọi nameserver, nên bạn có thể phải chờ.
Ba cách tự động hóa DNS-01
Tạo TXT bằng tay dùng được một lần (certbot certonly --manual --preferred-challenges dns), nhưng chứng chỉ làm tay không tự gia hạn. Hãy chọn một trong các cách sau.
| Cách | Hoạt động thế nào | Cần chú ý |
|---|---|---|
| API của nhà cung cấp DNS | ACME client dùng plugin (Certbot DNS plugin, acme.sh, lego) để tạo TXT qua API | Dùng API token chỉ có quyền trên một zone và bản ghi TXT nếu nhà cung cấp hỗ trợ |
| Ủy quyền bằng CNAME | Trỏ _acme-challenge.example.com bằng CNAME sang một tên ở zone riêng mà chỉ ACME client điều khiển |
Let's Encrypt đi theo CNAME như tài liệu mô tả; giữ zone được ủy quyền nhỏ và khóa chặt |
| DNS trên cùng server | ACME client ghi TXT thẳng vào DNS authoritative chạy ngay bên cạnh | Nameserver phải ổn định, tốt nhất là hai cái trên hai server khác nhau |
Dù chọn cách nào, hãy dọn bản ghi TXT cũ. Let's Encrypt chấp nhận nhiều giá trị TXT ở cùng một tên, nhưng cảnh báo phản hồi quá lớn có thể bị từ chối. Nếu DNS của bạn trải trên nhiều nameserver hoặc mạng anycast, hãy chắc chắn mọi nameserver đã có bản ghi trước khi client yêu cầu xác thực.
Thời hạn ngắn hơn khiến tự động hóa là bắt buộc
Chứng chỉ Let's Encrypt hiện có hạn 90 ngày, và FAQ còn có chứng chỉ 6 ngày cho ai chọn dùng. Kế hoạch công bố tháng 12/2025 rút ngắn cả thời hạn chứng chỉ lẫn thời gian được dùng lại một lần xác thực thành công:
| Thời điểm | Profile mặc định (classic) |
Dùng lại xác thực |
|---|---|---|
| Hiện tại (10/2026) | Chứng chỉ 90 ngày | 30 ngày |
| 10/2/2027 | Chứng chỉ 64 ngày | 10 ngày |
| 16/2/2028 | Chứng chỉ 45 ngày | 7 giờ |
Profile tlsserver (tự chọn dùng) được lên lịch cấp chứng chỉ 45 ngày từ 13/5/2026. Thay đổi về thời gian dùng lại xác thực ảnh hưởng wildcard nhiều nhất: với khoảng 7 giờ, gần như lần gia hạn nào cũng cần bản ghi TXT mới, nên tự động hóa DNS phải chạy đúng mọi lần, không chỉ lần đầu. Let's Encrypt khuyên dùng ACME Renewal Information (ARI) hoặc gia hạn ở khoảng hai phần ba thời hạn, và cảnh báo lịch gia hạn cố định 60 ngày sẽ không còn đủ.
Let's Encrypt cũng đã công bố DNS-PERSIST-01, cách xác thực mà bản ghi TXT chỉ cần đặt một lần, không đổi mỗi lần gia hạn (thông báo). Tại thời điểm viết bài, trang challenge types chưa liệt kê phương thức này, nên đừng lên kế hoạch dựa vào nó cho tới khi có.
DNSSEC và chứng chỉ wildcard
DNSSEC ký zone DNS để resolver có kiểm tra phát hiện được câu trả lời giả mạo. Điều này quan trọng với chứng chỉ vì chính các truy vấn DNS là cách CA xác định ai kiểm soát tên miền. Nhân viên Let's Encrypt đã khẳng định Let's Encrypt luôn kiểm tra DNSSEC trong các truy vấn, dù không bắt buộc tên miền phải được ký.
Điều đó dẫn tới hai hệ quả:
- Lợi ích: nếu zone được ký, kẻ tấn công giả mạo câu trả lời DNS gửi tới resolver của Let's Encrypt không thể làm giả bản ghi TXT
_acme-challengehay bản ghi CAA của bạn, vì bản giả không qua được kiểm tra. - Rủi ro: nếu DNSSEC bị lỗi, ví dụ bản ghi DS cũ còn ở nhà đăng ký sau khi đổi khóa, Let's Encrypt nhận SERVFAIL và từ chối cấp. Tài liệu CAA của Let's Encrypt cho biết SERVFAIL trên zone có ký "most often" là do lỗi xác thực DNSSEC, và gợi ý dùng công cụ như dnsviz.net.
Khi bật DNSSEC, chỉ khai báo bản ghi DS ở nhà đăng ký sau khi zone đã được ký. Khi tắt, làm ngược lại: gỡ bản ghi DS trước, chờ hết TTL, rồi mới ngừng ký. Ngừng ký khi DS vẫn còn khiến cả tên miền không phân giải được với các resolver có kiểm tra DNSSEC, chứ không chỉ riêng việc cấp chứng chỉ.
Bản ghi CAA cho wildcard
Bản ghi CAA liệt kê CA nào được phép cấp chứng chỉ cho tên miền của bạn. Trang CAA của Let's Encrypt giải thích các thẻ liên quan:
| Thẻ | Tác dụng |
|---|---|
issue "letsencrypt.org" |
Cho phép Let's Encrypt cấp cả tên thường và wildcard, trừ khi issuewild quy định khác |
issuewild |
Quyền riêng chỉ dành cho tên wildcard |
Tham số accounturi |
Chỉ cho phép tài khoản ACME của bạn, để kẻ chiếm DNS tạm thời không dùng được tài khoản của họ |
Tham số validationmethods |
Giới hạn loại xác thực được dùng, ví dụ chỉ dns-01 |
Bản ghi CAA đáng tin nhất khi nằm trong zone có ký DNSSEC, cùng lý do như bản ghi TXT.
SSL wildcard và DNSSEC trên ZoPanel
ZoPanel đi theo cách "DNS trên cùng server". Khi quản trị viên cài DNS server (PowerDNS) và zone của tên miền được host và trỏ nameserver về đó, tab SSL của website có lựa chọn Also *.example.com (wildcard). Tích chọn rồi bấm Issue certificate: ZoPanel ghi bản ghi TXT vào chính zone của nó, nên không có API key bên thứ ba nào phải lưu. Chứng chỉ phủ example.com và *.example.com; các alias đã được wildcard phủ như www bị bỏ khỏi đơn vì Let's Encrypt từ chối tên trùng lặp. Lần gia hạn giữ nguyên wildcard và tự chạy, có cảnh báo nếu gia hạn thất bại (tài liệu SSL).
Trên cùng zone đó, bạn bật DNSSEC bằng một công tắc; ZoPanel hiển thị bản ghi DS để khai báo ở nhà đăng ký, còn tài liệu DNS ghi rõ thứ tự an toàn khi tắt. Zone mới cũng có sẵn bản ghi CAA chỉ cho phép Let's Encrypt.
Hạn chế cần nói rõ: ZoPanel không cấp wildcard qua API DNS của Cloudflare hay nhà cung cấp khác. Nếu zone vẫn ở Cloudflare, ZoPanel từ chối yêu cầu wildcard và chỉ bạn sang trang DNS; khi đó hãy dùng Cloudflare Origin certificate như trong bài dùng Cloudflare với VPS. Để chạy nameserver riêng, xem bài tạo private nameserver, và trang tính năng DNS để biết toàn bộ công cụ DNS.
Kết luận
Lấy SSL wildcard miễn phí từ Let's Encrypt là bài toán DNS nhiều hơn là bài toán chứng chỉ. Hãy xin cả tên miền gốc và *.example.com, tự động tạo TXT bằng API token giới hạn quyền, ủy quyền CNAME hoặc DNS trên cùng server, và chắc chắn nó chạy được ở mọi lần gia hạn, vì thời hạn và thời gian dùng lại xác thực đều giảm từ tháng 2/2027. Nếu ký zone bằng DNSSEC, hãy giữ bản ghi DS luôn khớp, vì chữ ký lỗi sẽ chặn việc cấp chứng chỉ.
Để thử chứng chỉ wildcard và DNSSEC mà không phải nối API, gói Free của ZoPanel có sẵn DNS server, SSL wildcard và DNSSEC cho 3 tài khoản hosting, 10 website, không giới hạn thời gian.
Câu hỏi thường gặp
Chứng chỉ wildcard của Let's Encrypt có thật sự miễn phí không?
Có. Let's Encrypt không thu phí cho bất kỳ chứng chỉ nào, kể cả wildcard. Chi phí nằm ở vận hành: bạn cần cơ chế tự động tạo bản ghi TXT cho mỗi lần gia hạn.
Wildcard có phủ tên miền chính không?
Không. *.example.com phủ các tên ngay dưới example.com một cấp, không phủ chính example.com và không phủ tên sâu hơn như a.b.example.com. Hãy xin example.com và *.example.com trên cùng một chứng chỉ.
Có lấy wildcard bằng xác thực HTTP được không?
Không. Tài liệu Let's Encrypt ghi rõ HTTP-01 không dùng được cho chứng chỉ wildcard. Chỉ DNS-01 làm được.
DNSSEC có làm hỏng Let's Encrypt không?
DNSSEC đúng thì không; nó còn làm việc xác thực đáng tin hơn. DNSSEC sai thì có: nếu chữ ký hoặc bản ghi DS sai, truy vấn của Let's Encrypt trả về SERVFAIL và chứng chỉ không được cấp. Hãy kiểm tra zone bằng công cụ debug DNSSEC trước khi xin chứng chỉ.
Chứng chỉ wildcard gia hạn bao lâu một lần?
Hiện tại thường 60 ngày một lần với chứng chỉ 90 ngày. Từ 10/2/2027 thời hạn mặc định giảm còn 64 ngày và từ 16/2/2028 còn 45 ngày, nên gia hạn sẽ dày hơn. Hãy để client lên lịch theo ngày hết hạn thực tế hoặc ARI, không theo chu kỳ cố định.
Đọc tiếp

Bán VPS quản trị cho agency: gói dịch vụ, định giá và công cụ
Cách bán VPS quản trị cho agency: gói gồm những gì, ai chịu trách nhiệm phần nào, ví dụ định giá theo chi phí, và công cụ vận hành nhiều server.

Checklist bảo mật VPS hosting: 40 mục cần kiểm tra
Checklist bảo mật VPS chạy website với 40 mục: cập nhật, SSH, tường lửa, control panel, cách ly tài khoản, lớp web và backup.

Control panel nào chạy được trên Ubuntu 24.04 và Debian 13?
Chọn control panel cho Ubuntu 24.04 hay Debian 13, trước hết panel phải hỗ trợ OS đó. Chúng tôi đối chiếu tài liệu chính thức của 9 panel.