通配符ssl证书可保护主域名下所有二级子域名(如www.example.com),但不自动包含根域example.com或三级子域;需在san中显式添加根域,多主域名须用san证书或分别申请通配符;nginx各server块共用同一证书文件,须确保server_name均在证书覆盖范围内,并验证证书链完整性和配置语法。

通配符 SSL 证书能用一张证书保护主域名下的所有二级子域名(如 www.example.com、api.example.com),但不自动包含根域 example.com 或三级子域(如 dev.api.example.com)。要让多个域名共用它,关键不是“写法多”,而是证书覆盖范围 + Nginx 配置逻辑清晰 + 域名归属验证到位。
证书申请:必须覆盖所有要用的域名
-
通配符
*.example.com只匹配单层子域,比如:- ✅
shop.example.com - ✅
blog.example.com - ❌
example.com(根域需手动加进证书的 SAN 列表) - ❌
staging.shop.example.com(三级子域,不匹配)
- ✅
如果你要同时支持
example.com和*.example.com,申请时必须显式添加example.com到 Subject Alternative Names(SAN)中。多数免费平台(如 JoySSL、FreeSSL.cn、Let’s Encrypt)都支持这个操作,勾选或手动填写即可。多个完全不同的主域名(如
a.com和b.com)不能靠一个通配符覆盖,得用 多域名(SAN)证书 或分别申请两个通配符(*.a.com+*.b.com)。
Nginx 配置:每个 server 块独立,证书路径统一
不需要为每个子域生成不同证书文件,只要它们都在同一张证书的 SAN 范围内,就共用同一组 .pem 和 .key 文件。
针对Linux系统,phpStudy团队推出全网首家linux docker容器面板,只要一个命令,快速安装面板,在面板里可以自行选择软件版本,可以方便的进行安全配置,就算没有Linux基础也可以快速搭建和管理PHP服务器环境!
把证书放固定位置,例如:
conf/ssl/example.com.pem(含域名证书 + 中间证书)conf/ssl/example.com.key每个子域写一个
server块,全部引用相同证书路径:
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate conf/ssl/example.com.pem;
ssl_certificate_key conf/ssl/example.com.key;
root html/www;
index index.html;
}
server {
listen 443 ssl http2;
server_name api.example.com;
ssl_certificate conf/ssl/example.com.pem;
ssl_certificate_key conf/ssl/example.com.key;
root html/api;
index index.html;
}
server {
listen 443 ssl http2;
server_name example.com; # 根域也得在证书 SAN 里才有用
ssl_certificate conf/ssl/example.com.pem;
ssl_certificate_key conf/ssl/example.com.key;
root html/root;
index index.html;
}
- 注意:
- 所有
server_name必须是证书里明确列出的域名(包括example.com和*.example.com) - 不需要额外开启 SNI,现代 Nginx 默认支持
- Windows 下路径避免中文、空格、特殊符号;权限上确保 Nginx 进程能读取
.key
- 所有
验证与生效:别跳过这步
修改完配置后,先测试语法:
nginx -t
成功再重载:nginx -s reload浏览器访问各子域,看地址栏是否显示锁图标,点击可查看证书详情,确认“颁发给”字段包含你正在访问的域名。
推荐用 SSL Labs 扫描任意一个子域,它会列出证书实际覆盖的所有域名,帮你快速发现遗漏项。
常见踩坑点
- 证书没加根域
example.com,结果访问https://example.com提示不安全 -
.pem文件漏了中间证书,导致部分安卓或旧系统提示证书链不完整 -
server_name写错(比如少个www.或拼写错误),Nginx 找不到匹配块,走默认 server - Windows 杀毒软件拦截
.key文件读取,临时关闭或加白名单试试
不复杂但容易忽略细节。










