通配符SSL证书(如.example.com)可统一保护所有二级域名,但不支持裸域名和三级域名;Nginx通过server_name .example.com单块配置即可匹配,需配合DNS-01自动化续期及TLS 1.2+安全加固。

用一个通配符证书(如 *.example.com)统一保护所有二级域名,是高效、可维护的 HTTPS 实施方式。关键不在于“能不能”,而在于“怎么配得稳、管得住、扩得开”。以下是从部署到长期运维的实用要点。
证书覆盖范围必须清晰认知
通配符证书只匹配**一级子域名**,这是硬性限制,不是配置问题:
- ✅ 可用:api.example.com、shop.example.com、test.example.com
- ❌ 不可用:dev.api.example.com(二级子域)、example.com(裸域名)
若需覆盖裸域名,申请时必须显式包含:-d example.com -d *.example.com;若需支持多级子域,得另配 *.api.example.com 或改用 SAN 证书补充。
Nginx 配置只需一个 server 块,无需为每个子域重复写
利用 server_name 的通配符匹配能力,避免配置爆炸:
server {
listen 443 ssl;
server_name *.example.com; # 自动匹配所有一级子域
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 其他 SSL 参数(协议、密钥交换、会话缓存等)统一设置
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
}
}
注意:server_name *.example.com 不会匹配 example.com,裸域名需单独加一个 server 块或合并进同一块中用精确匹配。
证书更新与分发必须自动化,不能靠手动复制
Let’s Encrypt 的通配符证书只能通过 DNS-01 验证,续期无法全自动——但可通过钩子脚本闭环:
- 首次申请用
certbot certonly --manual --preferred-challenges dns,手动添加 TXT 记录 - 续期时用
--manual-auth-hook调用 DNS 更新脚本(如阿里云 API、Cloudflare CLI) - 续期成功后,用
--deploy-hook触发rsync + nginx -s reload,推送到所有 Nginx 节点
不推荐 NFS 或共享存储挂载证书目录——单点故障、权限难控、reload 时机不可靠。
安全与兼容性不能妥协
基础配置之外,这几项直接影响终端访问成功率和安全性:
- 确保
ssl_trusted_certificate指向完整证书链(fullchain.pem),否则部分安卓/iOS 客户端握手失败 - 禁用 TLS 1.0/1.1,强制启用 TLS 1.2+ 和现代加密套件(如
ECDHE-ECDSA-AES128-GCM-SHA256) - 开启 OCSP Stapling,减少客户端证书状态查询延迟
- 私钥权限严格设为
600,属主为root,Nginx 主进程以 root 启动才能读取
不复杂但容易忽略











