迁移新域名后,SSL 证书和 CDN 缓存都不会自动跟着域名走:证书是按域名(CN/SAN)签发的,新域名不在证书覆盖范围内就会直接报证书错误;CDN 配置按“加速域名”隔离,新域名必须重新添加加速域名、绑定证书、配置回源,旧域名的缓存也不会自动迁移或失效。正确顺序是:先签发覆盖新域名的证书 → 让新域名回源验证通过 → 在 CDN 添加新域名并绑证书 → 旧域名 301 跳转 → 最后刷新旧缓存。
换域名后 SSL 证书为什么会报错?
结论:证书校验的是域名,不校验服务器 IP,新域名不在证书 SAN 列表里,浏览器会直接抛 NET::ERR_CERT_COMMON_NAME_INVALID。
解决办法有两种:一是给新域名重新签发一张证书;二是直接签发一张多域名 SAN 证书(把新旧域名都写进 Subject Alternative Name),过渡期最省事,旧域名 301 期间也不会有证书告警。
免费证书用 acme.sh 或 certbot 签发。注意两个硬性条件:Let's Encrypt 证书有效期 90 天,acme.sh 默认在到期前 60 天自动续期,务必确认 cron 任务真的在跑;HTTP-01 验证要求新域名已解析到源站、80 端口可访问,如果站点已经挂在 CDN 后面或要签泛域名,改用 DNS-01 验证。
CDN 上换域名要改哪些配置?
结论:CDN 按加速域名隔离,新域名必须当成一个新站点从零配一遍,旧域名的配置不会继承。
操作步骤(控制台按此顺序):
- 新增加速域名,填写新域名、选择业务类型和加速区域;
- 配置源站地址和回源 HOST——把回源 HOST 改成新域名的站点域名,这是最高频的坑,不改会导致源站返回 404 或跳回旧站;
- 上传或托管新证书,开启强制 HTTPS 跳转、HTTP/2;
- 拿到系统分配的 CNAME 地址,去 DNS 服务商处解析,CNAME 生效并删除旧 A 记录;
- 检查缓存键规则:如果缓存键里带了 Host 或完整 URL,新旧域名会各存一份缓存,属于正常现象,别误判成缓存没生效。
旧域名的缓存怎么清理?
结论:旧域名缓存不会随域名停用而消失,必须主动刷新,同时用 301 把流量和权重导到新域名。
在 CDN 控制台的“刷新预热”入口提交刷新任务,URL 刷新适合少量页面,目录刷新适合整站静态资源;全站刷新部分厂商不开放自助,需要提交工单。如果旧域名缓存过期时间设的是 30 天以上,刷新请求量会很大,建议迁移前先把重要静态资源的文件名加版本号(如 app.v2.js),从源头绕过缓存。
旧域名不要直接关停,配置 301 永久重定向到新域名对应路径,至少保留 3 到 6 个月,让外部链接和搜索引擎完成权重重分配。同时更新 sitemap、RSS 地址,并在百度搜索资源平台、Google Search Console 提交改版规则。页面正文里写死的绝对链接(尤其是数据库里存的 http://old.com/xxx)要用 SQL 批量替换,否则 HTTPS 页面会触发混合内容拦截。
换完怎么验证没有漏配?
结论:用三条命令就能查完证书、解析和跳转。
- 查证书 SAN:
openssl s_client -connect new.example.com:443 -servername new.example.com | openssl x509 -noout -text | grep -A1 "Subject Alternative Name"
- 查解析是否走 CDN:
dig new.example.com,Type 应为 CNAME 且指向 CDN 域名
- 查旧域名跳转:
curl -I http://old.example.com,应返回 301 且 Location 指向新域名
另外注意 HSTS:旧域名如果开过 HSTS,浏览器会记住一段时间,这段时间内旧域名不能只保留 HTTP,必须继续提供 HTTPS 证书,否则用户会被彻底挡在门外。
总结:换域名不是改个解析就完事,证书要重新签发或做 SAN 覆盖,CDN 的加速域名、回源 HOST、证书三样要在新域名上重配一遍,旧域名缓存主动刷新并 301 至少保留 3 个月,最后用 openssl、dig、curl 三条命令逐项验收。