支持。主流 CDN 服务商(阿里云 CDN、腾讯云 CDN、Cloudflare、又拍云等)全部支持 HTTPS 配置,且大多数控制台提供「一键申请免费 DV 证书并自动部署」的入口。真正需要你决策的不是「能不能配」,而是证书托管方式、回源协议和强制跳转策略这三个选项怎么选。
CDN 的 HTTPS 到底支持哪些配置方式?
结论:CDN 的 HTTPS 有两条路——把证书上传或托管到 CDN 边缘节点(终端用户到 CDN 这一段加密),以及配置回源协议(CDN 节点到源站这一段是否加密)。两段独立配置,只开前一段不算完整加密。
边缘证书一般有三种来源:控制台上传自有证书(PEM 格式证书链 + 私钥)、使用云厂商免费 DV 证书(有效期通常 90 天或 1 年,需关注续期)、直接托管在 CDN 平台的证书管理服务里自动续签。多数平台还支持泛域名证书 *.example.com,但要注意它不匹配裸域 example.com,裸域需要单独再配一张证书或用多域名 SAN 证书。
回源协议通常有 HTTP、HTTPS、协议跟随三种。源站已装证书就选 HTTPS 或协议跟随;源站只有 80 端口就选 HTTP,此时 CDN 到源站这段是明文,内网或同地域链路可接受,跨公网建议补上源站证书。
CDN 配置 HTTPS 的具体步骤是什么?
结论:标准流程是「上传证书 → 绑定域名 → 开启强制跳转 → 验证证书链 → 处理混合内容」,其中验证证书链和处理混合内容是最容易被漏掉的两步。
- 在 CDN 控制台的证书管理里上传证书:证书文件填完整证书链(服务器证书 + 中间证书),根证书不需要;私钥单独粘贴。
- 在域名管理里为该加速域名开启 HTTPS,选择刚上传的证书,端口固定 443。
- 开启「HTTP → HTTPS 强制跳转」,跳转方式选 301(永久),不要用 302,避免搜索引擎反复抓取旧地址。
- 回源协议按源站实际情况选 HTTPS 或协议跟随,源站证书最好是受信任 CA 签发的,自签证书需要 CDN 侧开启「忽略证书校验」否则会 502。
- 用命令验证证书链完整性:
openssl s_client -connect www.example.com:443 -servername www.example.com -showcerts
输出里应能看到至少两张证书(站点证书 + 中间证书),并且末尾出现 Verify return code: 0 (ok)。如果只返回一张,说明中间证书没配,安卓端和部分 Java 客户端会报证书不受信任。
为什么配好 HTTPS 后页面还在报「不安全」?
结论:90% 的情况是混合内容(Mixed Content),即 HTTPS 页面里引用了 http:// 的图片、JS、CSS 或接口,而不是证书本身有问题。
打开浏览器开发者工具的 Console,会直接看到 Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure resource 'http://...'。处理方式是按顺序排查:先全站搜索模板里的 http:// 硬编码,改成 // 或 https://;再检查数据库里用户发布的历史内容(很多老帖子的图片是 http 外链),用 SQL 批量替换;最后看第三方资源(统计代码、广告位、字体库)是否提供 HTTPS 版本,不提供的直接下掉。
另一个常见坑是重定向循环:源站或 CDN 已经配了 HTTPS,应用层(如 WordPress 的 siteurl、Nginx 的 X-Forwarded-Proto 判断)还在按 HTTP 处理,导致 301 来回跳。检查方法:
curl -I https://www.example.com
看返回的 Location 头是否又指回 http 地址。Nginx 反代场景要在源站加 proxy_set_header X-Forwarded-Proto $scheme; 并让应用识别该头。
强制 HTTPS 和 HSTS 要不要开?
结论:HTTP 301 强制跳转建议全站开;HSTS 建议在确认所有子域名都能走 HTTPS 之后再开,否则会把用户锁在打不开的页面上。
HSTS(HTTP Strict Transport Security,强制浏览器只用 HTTPS 访问该域名)通过响应头下发:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age=31536000 是 1 年。includeSubDomains 会把规则套用到所有子域,如果还有只跑 HTTP 的旧子站,用户会直接访问失败且无法点击「继续访问」绕过。稳妥做法是先设短周期,比如 max-age=300 观察几天,确认无误再逐步拉长到一年。
顺带一提,开启 HTTPS 后才能用 HTTP/2 和 HTTP/3,这两个协议对首屏加载的提升在多资源页面里很明显,纯 HTTP 站点享受不到。
小结
CDN 支持 HTTPS,而且是标配能力,配置重点在四件事:证书传完整链(含中间证书)、回源协议按源站实况选、301 强制跳转全站开启、上线后查混合内容和重定向循环。HSTS 属于加分项,先短周期试水再拉满。证书到期前 30 天记得续签,泛域名证书别忘了裸域单独配一张。这套排查流程在 GJ 站长论坛的运维版块也有不少实战帖可以参考。