在现代服务器管理中,为网站启用 HTTPS(超文本传输安全协议)已成为标准操作,HTTPS 默认使用 443 端口进行通信,在 CentOS 服务器上正确开启此端口是部署安全网站的第一步,本文将详细介绍如何在主流的 CentOS 7 及以上版本中,通过其默认的防火墙管理工具 firewalld 来开启 443 端口。

检查防火墙状态
在进行任何端口操作之前,首先需要确认 firewalld 防火墙服务正在运行,您可以使用以下命令进行检查:
sudo firewall-cmd --state
如果返回 running,则表示防火墙正在运行,如果没有运行,您需要启动并设置它开机自启:
sudo systemctl start firewalld sudo systemctl enable firewalld
使用 firewalld 开启 443 端口
firewalld 提供了两种主要的方式来允许流量通过:直接添加端口号或通过预定义的服务,推荐使用服务的方式,因为它更具可读性且易于管理。
通过服务(推荐)
firewalld 内置了 https 服务,该服务默认就指向了 443 端口,这是最简洁、最规范的方法。
- 
永久添加 https 服务规则:
--permanent参数确保此规则在防火墙重启后依然生效。sudo firewall-cmd --permanent --add-service=https
 - 
重新加载防火墙配置:为了让永久生效的规则立即应用,需要重新加载
firewalld。sudo firewall-cmd --reload
 
通过端口号
如果您不想使用服务,或者需要为非标准应用开启特定端口,可以直接指定端口号和协议(TCP/UDP)。

- 
永久添加 443/TCP 端口规则:
sudo firewall-cmd --permanent --add-port=443/tcp
 - 
重新加载防火墙配置:
sudo firewall-cmd --reload
 
验证端口是否已开启
完成上述操作后,应当验证 443 端口是否已成功开放,您可以通过以下命令查看当前生效的规则:
sudo firewall-cmd --list-all
在输出的信息中,您应该能在 services: 或 ports: 字段中看到 https 或 443/tcp,这表示规则已成功添加。
您还可以使用 ss 或 netstat 命令检查是否有应用程序(如 Nginx 或 Apache)正在监听 443 端口:
sudo ss -tulpn | grep :443
如果看到类似 nginx: master 或 httpd 的进程信息,说明您的 Web 服务器已准备就绪,并且防火墙也已允许流量进入。
为了方便查阅,以下是核心命令的小编总结:

| 操作目标 | 命令 | 说明 | 
|---|---|---|
| 通过服务开启(推荐) | sudo firewall-cmd --permanent --add-service=https | 
永久添加 HTTPS 服务 | 
| 通过端口开启 | sudo firewall-cmd --permanent --add-port=443/tcp | 
永久添加 443/TCP 端口 | 
| 应用配置 | sudo firewall-cmd --reload | 
重新加载防火墙使永久规则生效 | 
| 验证开放的服务 | sudo firewall-cmd --list-services | 
列出所有允许的服务 | 
相关问答 FAQs
问题 1:我已经按照教程开启了防火墙端口,为什么从外部还是无法访问我的网站?
解答: 这通常涉及两个层面的原因,请确认您的云服务提供商(如阿里云、腾讯云、AWS 等)的安全组规则中是否同样放行了 443 端口的入站流量,云服务器的安全组是另一层防火墙,必须与系统防火墙同时配置,检查服务器上的 Web 服务器软件(如 Nginx、Apache)是否已正确配置 SSL 证书并绑定监听在 443 端口上,可以使用 sudo ss -tulpn | grep :443 命令来确认是否有进程在监听该端口。
问题 2:firewalld 和 iptables 有什么区别?我应该使用哪个?
解答: firewalld 是 CentOS 7 及更新版本中默认的动态防火墙管理工具,它引入了“区域”和“服务”的概念,使得配置更加灵活和易于理解。iptables 是更传统的静态防火墙工具,在 CentOS 6 及更早版本中使用,对于现代的 CentOS 系统,强烈推荐使用 firewalld,因为它提供了更友好的管理接口并且能动态应用规则,无需像 iptables 那样在每次更改后都需刷新所有规则,除非您有特殊需求或正在维护旧系统,否则应坚持使用 firewalld。