主域名接入 Cloudflare 后,子域名不需要在源服务器单独配置 SSL 证书即可实现 HTTPS 访问。只要子域名 DNS 记录开启代理(橙色云),Cloudflare 会自动颁发边缘证书,配合灵活(Flexible)SSL 模式即可使用。
先说结论:子域名无需源站证书,通过 Cloudflare 边缘证书和灵活模式即可启用 HTTPS,但需注意 SSL 模式与源站配置的匹配。
- 适合:源服务器未配置子域名证书或无法安装证书的场景
- 先准备:确保子域名 DNS 记录已添加且代理状态为橙色云
- 验收:浏览器地址栏显示锁图标且无混合内容警告
快速处理思路
若希望子域名快速启用 HTTPS 而不修改源服务器,按以下逻辑操作:首先在 Cloudflare DNS 设置中添加子域名 A 记录并开启代理,然后在 SSL/TLS 设置中选择灵活模式,最后强制开启 HTTPS 跳转。
若源服务器已部署有效证书,则选择完全(严格)模式以获得端到端加密。
为什么会这样
Cloudflare 的 SSL 加密分为边缘证书和源站证书两部分,子域名自动继承域名的边缘证书权限。Cloudflare 提供四种 SSL 模式,其中灵活模式允许客户端到 Cloudflare 为 HTTPS,而 Cloudflare 到源服务器为 HTTP,因此源站无需配置证书。
当子域名 DNS 记录开启代理(橙色云)后,流量经过 Cloudflare 边缘节点,节点会自动匹配通用 SSL 证书覆盖该子域名。若源站无证书,必须使用灵活模式,否则会出现重定向循环或连接错误。
分步处理
第一步:添加子域名 DNS 记录。登录 Cloudflare 控制台,进入 DNS 设置,添加 A 记录,名称填写子域名前缀(如 api),内容为源服务器 IP,代理状态务必开启(橙色云)。
第二步:配置 SSL/TLS 模式。进入 SSL/TLS 概述页面,若源站无证书,选择灵活(Flexible);若源站有有效证书,选择完全(严格)(Full (strict))。
第三步:开启强制 HTTPS。在 SSL/TLS 边缘证书设置中,启用始终使用 HTTPS(Always Use HTTPS),确保 HTTP 请求自动跳转到 HTTPS。
第四步:检查源站配置。若使用灵活模式,确保源站 Nginx 或 Apache 未强制重写 HTTP 到 HTTPS,避免与 Cloudflare 跳转冲突形成重定向循环。
怎么验证是否生效
使用浏览器访问子域名 HTTPS 地址,观察地址栏是否显示安全锁图标。点击锁图标查看证书信息,颁发者应显示为 Cloudflare 相关机构。
使用命令行工具 curl 测试,执行curl -I https://subdomain.example.com,检查返回状态码是否为 200 或 301,且响应头中包含cf-ray字段证明流量经过 Cloudflare。
检查页面源码,确认所有资源(图片、JS、CSS)均通过 HTTPS 加载,避免浏览器报混合内容(Mixed Content)警告。
常见坑
重定向循环错误:若 Cloudflare 设置为灵活模式,但源服务器强制跳转 HTTPS,会导致无限重定向。解决方法是将 Cloudflare 模式改为完全模式,或取消源站的强制 HTTPS 跳转。
客户端 IP 获取问题:开启 Cloudflare 代理后,源服务器日志记录的 IP 均为 Cloudflare 节点 IP。需在 Nginx 配置中解析CF-Connecting-IP或X-Forwarded-For头来获取用户真实 IP。
混合内容警告:主页面为 HTTPS 但内部资源引用 HTTP 链接会导致浏览器显示不安全。需启用自动 HTTPS 重写功能或手动修改资源链接为相对路径或 HTTPS 协议。
常见问题
子域名需要单独申请 Cloudflare 证书吗?
不需要,Cloudflare 通用 SSL 证书自动覆盖主域名及所有已代理的子域名。
灵活模式和严格模式有什么区别?
灵活模式源站无需证书但回源不加密,严格模式源站必须有有效证书且回源加密,安全性更高。
为什么子域名 DNS 开了代理还是无法 HTTPS?
可能 DNS 尚未生效或 SSL 模式选择错误,需确认域名状态为 Active 且 SSL 模式与源站证书状态匹配。
参考来源
- CloudFlare 免费版使用避坑指南:如何正确配置 SSL 严格模式与灵活模式 (含子域名处理技巧)
- 域名接入 CloudFlare:域名 DNS 修改与 SSL 配置流程
- Cloudflare 免费 CDN 怎么配置 SSL 证书?免费 HTTPS 加密部署教程
- Cloudflare 域名托管全攻略,白嫖全球最快 CDN 与免费 SSL 证书
- Cloudflare 子域名设置指南