
你是否遇到过这样的场景:部署了 CDN,也部署了 SSL 证书,结果多个域名访问时却出现“证书不匹配”或“跨域错误”?这其实不是配置出错,而是你踩中了 SSL 跨域的“隐形地雷”。
今天我们不说“什么是 HTTPS”,不复读“SSL 是加密协议”这种基础知识,我们来聊点真问题:当你的网站涉及多个子域名甚至跨根域时,SSL 到底该怎么配?CDN 怎么支持多域 HTTPS 而不出错?这一切,今天我们一次讲透。
为什么多域名 HTTPS 是个麻烦事?
很多运维以为,“一个 SSL 证书不就搞定了吗”,但实际上:
CDN 节点是“泛全球”的,每个节点要识别你访问的是哪个域;
浏览器验证的是 证书和当前域名是否一一匹配,哪怕是二级域不同也不认;
HTTPS 本质是先握手验证身份,再传数据,证书不对,连数据都传不了;
多域 SSL 配置错了会直接导致网站打不开,而非简单“功能出错”。
这事可大也可小,小了是一个子域打不开,丢几个页面,大了直接让搜索引擎认定你的站点“不安全”,SEO 跌穿地板。
常见场景:哪些情况需要多域配置?
在开始实操之前,我们先看看你是不是已经中招:
| 场景 | 是否跨域 | 推荐证书类型 |
|---|---|---|
www.domain.com 与 api.domain.com | 否(同根域) | 通配符证书 |
www.domain.com 与 domain.cn | 是(跨根域) | 多域名 SAN 证书 |
cdn.domain.com 与 img.static.cn | 是(完全不同) | 多域名证书或单独配置 |
CDN 上的 SSL 处理流程:背后的那层“逻辑开关”
为什么 SSL 配置会在 CDN 上变复杂?你得理解一件事:CDN 是“中间人”,既是客户端眼里的服务器,也是你源站眼里的客户端。CDN 节点会进行:
SSL 终止(SSL Termination):CDN 节点与客户端之间建立 HTTPS,解密请求;
回源选择:将请求根据规则回源到对应的源站;
再发请求:是否开启源站 HTTPS 是你配置决定的,但终止点就是 CDN 本身。
换句话说,如果你 CDN 的证书不支持所有你的网站域名,客户端连不上,哪怕你的源站配置再对也没用。
配置方案一:通配符证书(适用于子域场景)
适合场景:*.domain.com
优点:
只需部署一张证书;
自动支持所有子域,如
www.,cdn.,api.;管理成本低。
限制:
只支持一级子域名,
a.b.domain.com是不支持的;不支持跨根域名;
有些 CA(证书颁发机构)收费贵。
CDN 上配置注意点:
一定要明确“泛域名”生效的规则,例如有些平台不自动支持需要配置正则;
启用 SNI(Server Name Indication),否则证书不会匹配域名;
如果 CDN 是多厂商联动(比如主节点是阿里,边缘走腾讯),记得同步证书。
配置方案二:SAN 多域名证书(适用于多个根域名)
适合场景:domain.com, domain.cn, static.io 等完全不同域名
优点:
一张证书支持多个完全不同的域名;
在浏览器里看起来就是“一个可信任的多域证书”。
限制:
添加域名后需要重新签发;
一般支持 10–100 个域名,数量有限;
每年续签麻烦,操作繁琐。
CDN 配置要点:
确保每个 CDN 节点支持读取所有域名(有些平台需拆分绑定);
自动化更新证书 很重要,否则某个域名一过期就报错;
如果你用了 Let's Encrypt 之类的免费证书,检查平台是否支持自动续期(多数 CDN 只支持手动上传)。
配置方案三:多证书分发(适用于复杂的跨区域系统)
适合场景:大型多业务系统、多个品牌域、CDN 多厂商部署
核心思路:
每个域名配一张证书;
CDN 上配置“基于 SNI 的多证书调度”;
按访问域名分发到对应证书。
好处:
灵活度极高,按需配置;
容错能力强,不同域名过期互不影响。
风险点:
配置复杂,稍有不慎就 HTTPS 整站报错;
各 CDN 厂商对“多证书支持”不统一,有的平台限制最多上传 5 张。
跨域 HTTPS 与 CDN 缓存的交互坑
还有一个大家经常踩的坑:你部署了 SSL 没问题,访问也 OK,但 CDN 缓存不生效。为什么?
因为 CDN 默认会根据 Host + Protocol + URL 判断是否命中缓存。你有多个域名,即使页面内容一样,CDN 也可能认为是“不同资源”,缓存全失效!
解决办法:
开启缓存键重写(Cache Key Rewrite):将多个域统一为同一缓存键;
统一配置 HTTPS 回源:确保缓存与协议一致;
使用主域做缓存代理:比如所有子站统一走
cache.domain.com,仅做资源转发。
常见错误总结清单
| 问题 | 根因 | 解决方案 |
|---|---|---|
| HTTPS 报证书错误 | 域名不在证书里 | 检查证书 SAN 项是否包含域名 |
| CDN 命中率下降 | 多域未合并缓存键 | 使用 Host 重写或缓存键合并策略 |
| 证书自动续期失败 | CDN 不支持自动拉取证书 | 改为手动上传或换支持自动化的平台 |
| 跨厂商 CDN 证书失效 | 没同步证书 | 自动同步或统一证书源策略 |
结语?不,我们来点实话
不是你不会配 SSL,而是 SSL 和 CDN 本就不是“你部署就生效”的事,它是一个不断踩坑和调优的过程。你要考虑证书种类、CDN 平台支持、浏览器兼容性、自动化更新流程,甚至缓存策略。
唯一的建议:别贪图简单。部署一张通配符或免费的 Let's Encrypt 看似省事,但真正出问题时,还是得靠精准的策略和结构化的配置来撑住你的网站。
如果你的网站正面临高并发、多业务、跨域 HTTPS 配置混乱的问题,回头看看今天这篇文章,或许就能找到关键点。