Cloudflare SSL/TLS设为Full(strict)仍允许自签证书连接的问题
Cloudflare Full (strict)模式下仍允许自签名证书连接的原因及解决方法
可能的原因
- 配置未同步生效:修改Cloudflare加密模式后,全局配置同步需要几分钟时间,立即测试可能还处于旧状态。
- 自签名证书被Cloudflare手动信任:如果你曾把自签名证书上传到Cloudflare的「源服务器证书」列表,Cloudflare会将其纳入可信范围,自然会通过验证。
- 测试路径绕开了Cloudflare:要是你直接访问服务器公网IP而非Cloudflare解析的域名,Cloudflare的SSL验证根本没介入,Apache的自签名证书当然能正常建立连接。
- Apache证书配置混淆:若Apache同时存在多个SSL虚拟主机配置,其中某个使用了合法CA证书,而你测试的自签名主机未被Cloudflare正确路由(或DNS未指向Cloudflare),也会出现这种情况。
解决办法
1. 确认Cloudflare配置已生效
- 等待5-10分钟,让配置完成全局同步。
- 登录Cloudflare控制面板,进入「SSL/TLS」→「加密」页面,再次确认模式确实是Full (strict)。
2. 移除Cloudflare中手动添加的自签名证书
- 进入「SSL/TLS」→「源服务器」页面,检查是否有你上传的自签名证书。如果有,直接删除,Cloudflare就不会再信任它。
3. 确保测试请求走Cloudflare路由
- 测试时必须使用Cloudflare解析的域名,不要直接访问服务器IP。可以用
nslookup 你的域名确认解析结果是Cloudflare的IP,而非服务器自身IP。 - 若域名DNS记录仍指向服务器IP(未切换到Cloudflare),Cloudflare的验证机制不会生效,自签名证书就能被访问。
4. 修正Apache的SSL证书配置
- 给Apache换上受信任CA颁发的证书(比如Let's Encrypt的免费证书),证书域名要和Cloudflare解析的域名完全匹配。
- 检查Apache的SSL配置文件(比如
/etc/httpd/conf.d/ssl.conf或虚拟主机配置文件),确保SSLCertificateFile和SSLCertificateKeyFile指向合法证书文件,而非自签名证书。 - 重启Apache服务:
systemctl restart httpd(CentOS/RHEL系)或systemctl restart apache2(Debian/Ubuntu系)。
5. 验证证书验证机制是否生效
- 用命令行测试:
curl -v --connect-to 你的域名:443:服务器IP:443 https://你的域名,如果返回证书验证错误,说明Cloudflare的Full (strict)模式已经在严格验证证书了。
内容的提问来源于stack exchange,提问作者Alise
相关产品推荐
相关产品推荐

