防火墙拦截HTTPS教程指南实用
为什么你的 HTTPS 网站突然被拦截了
很多新手在配置完 SSL 证书后,发现网站依然无法访问,或者之前能打开的 HTTPS 链接突然失效。
这种情况八成是服务器防火墙将 443 端口(HTTPS 默认端口)给拦截了。
防火墙本质是一个流量守门员,如果没有为 443 端口放行规则,再好的证书也传不到用户手里。
下面按照零基础也能操作的方式,带你把拦截问题彻底解决。
前置准备:确认你的环境
在动手之前,先明确两件事:
- 登录方式:通过 SSH(例如 Xshell、Putty)连接服务器,或者直接通过宝塔面板后台操作。
- 防火墙类型:国内主流 Linux 服务器常见的是
firewalld(CentOS 7+)或iptables(CentOS 6 及更低版本)。宝塔面板默认使用firewalld并自管理规则。
如果你不确定,可以运行以下命令查看当前使用的防火墙工具:
systemctl status firewalld
如果返回 active 表示使用 firewalld,否则可能需要检查 iptables。
操作一:检查 443 端口当前是否被放行
方法 A:命令行检查
对于 firewalld,执行:
sudo firewall-cmd --list-all
你会看到类似输出,重点看 ports 或 services 部分是否包含 443/tcp。
如果 ports 里没有 443/tcp,或者 services 里没有 https,说明 443 端口没有被放行。
对于 iptables,执行:
sudo iptables -L -n | grep 443
如果没有任何输出,说明 443 端口被防火墙拦截。
方法 B:宝塔面板检查
登录宝塔面板 → 左侧菜单【安全】→ 查看【系统防火墙】列表。
如果 443 端口的状态是“未放行”(或者直接不在列表中),那就需要添加规则。
操作二:放行 443 端口(防火墙拦截HTTPS的解决办法)
情景 1:使用 firewalld
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload
第一条命令永久添加 443 端口,第二条让配置立即生效。
情景 2:使用 iptables
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo service iptables save
保存后建议重启 iptables 使规则生效。
情景 3:宝塔面板
进入【安全】→ 点击【添加端口规则】→ 端口填写 443,协议选择 TCP,备注写“HTTPS”,然后点击提交。
宝塔会自动更新防火墙配置。
避坑指南:这些细节容易导致操作失败
- 端口放行后依然打不开:检查云服务商(阿里云、腾讯云等)的安全组或防火墙策略。服务器内部防火墙放行了,但云控制台还拦着也没用。请登录云控制台,找到安全组或防火墙,放行入方向 TCP 443 端口。
- 使用了非标准的 HTTPS 端口:如果你的端口不是 443,比如用了 8443,那么放行规则也要对应改成
8443/tcp。 - 宝塔面板中已经放行但网站仍报错:查看宝塔【网站】→ 对应站点设置 →【SSL】是否已经正确部署了证书。防火墙只负责放行,证书配置错误也会导致 HTTPS 无法访问。
- 重启防火墙后规则丢失:使用
--permanent参数(firewalld)或service iptables save(iptables)来确保持久化。
效果验证:确认 HTTPS 正常访问
放行规则后,分两步检测:
- 本地端口连通性测试:在服务器上执行
curl -I https://你的域名,如果返回 HTTP/1.1 200 OK 或 301,说明防火墙已放行。 - 外部访问测试:打开浏览器访问
https://你的域名,如果能正常显示绿锁并加载页面,说明防火墙拦截HTTPS的问题已解决。
如果仍无法访问,请先检查域名 DNS 解析是否正确、云安全组规则是否配置、以及 Nginx/Apache 是否监听了 443 端口。
总结
防火墙拦截HTTPS是建站初期最常见的问题之一,排查核心就是确认 443 端口是否在放行列表。
本文提供了 firewalld、iptables 和宝塔面板三种环境的操作方法,并指出了云安全组、非标准端口等容易踩坑的地方。
建议你在部署 HTTPS 证书后,第一时间检查防火墙规则,并做内外网双重验证。
遇到异常时,优先回看本文避坑部分,通常能快速锁定原因。