如何在 Ubuntu 中打开 443 端口?

如何在 Ubuntu 中打开 443 端口?

我目前在工作中遇到了一些问题,当时我们的网站处于 SSL 状态,并且使用 443 端口。我发现了这一点网站检查服务器的状态。它显示 443 已关闭。

Port 443 is closed on xx.xxx.xx.xxx.

过了一会儿,我尝试了所有方法,但我不知道自己做错了什么。

netstat 显示以下内容:

sudo netstat -anltp | grep LISTEN


tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN

netstat -nap | grep 443
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      27898/nginx
tcp        1      0 127.0.0.1:34371         127.0.0.1:443           CLOSE_WAIT  25998/openssl

nginx 应该正在监听该端口,对吗?

看起来是这样,因为如果我使用 openssl 客户端,我会得到:

openssl s_client -connect 127.0.0.1:443
  CONNECTED(00000003)

但是当我尝试使用 443 端口从外部访问我的服务器时,出现连接超时。

openssl s_client -connect xx.xx.xx.xx:443
connect: Connection timed out
connect:errno=110

这是 iptable 规则

sudo iptables -L



Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Chain ufw-after-forward (0 references)
target     prot opt source               destination

Chain ufw-after-input (0 references)
target     prot opt source               destination

Chain ufw-after-logging-forward (0 references)
target     prot opt source               destination

Chain ufw-after-logging-input (0 references)
target     prot opt source               destination

Chain ufw-after-logging-output (0 references)
target     prot opt source               destination

Chain ufw-after-output (0 references)
target     prot opt source               destination

Chain ufw-before-forward (0 references)
target     prot opt source               destination

Chain ufw-before-input (0 references)
target     prot opt source               destination

Chain ufw-before-logging-forward (0 references)
target     prot opt source               destination

Chain ufw-before-logging-input (0 references)
target     prot opt source               destination

Chain ufw-before-logging-output (0 references)
target     prot opt source               destination

Chain ufw-before-output (0 references)
target     prot opt source               destination

Chain ufw-reject-forward (0 references)
target     prot opt source               destination

Chain ufw-reject-input (0 references)
target     prot opt source               destination

Chain ufw-reject-output (0 references)
target     prot opt source               destination

Chain ufw-track-input (0 references)
target     prot opt source               destination

Chain ufw-track-output (0 references)
target     prot opt source               destination

任何建议都将受到赞赏。

谢谢。

更新:我忘了说实际上没有防火墙在运行:

ufw status
Status: inactive

答案1

首先进行一些检查:

  • 您的服务器是否位于防火墙后面?端口可能由于防火墙配置而关闭
  • 只有 root 用户可以绑定到端口 433(和其他低端口)。您的服务器是否以正确的权限启动?(通常将其配置为在其自己的用户下运行,但它需要由 root 用户启动。)

PS 根据您的编辑(nginx 正在监听端口 443),这看起来像是防火墙问题。请注意,防火墙有两种类型:内部(在您的服务器上运行)和外部(在控制服务器网络访问的另一台机器上运行)。您的更新仅显示没有内部防火墙。

答案2

如果您正在使用某些提供前端 UI 的托管服务(例如 Amazon Web Services),请搜索适用于您正在运行的节点实例的安全组。

就我而言,我只需要向允许的服务添加 443 例外,仅此而已。

相关内容