过去 4 天,我一直在尝试在服务器上配置 SSL,但毫无成效。我生成了一个 CSR 文件,上传了证书并配置了一个 Vhost,但似乎什么都没起作用。重新启动 Apache 时没有收到任何错误,错误日志中也没有任何内容。
当我与证书提供商联系以了解他们是否可以提供帮助时,他们说“我们无法通过端口 443 连接到服务器“example.com”。请确保您的外部防火墙上的端口 443 已打开以启用 SSL。”
当我运行 UFW Status 来查看端口是否打开时,我得到了以下结果,这似乎表明它是打开的。
To Action From
-- ------ ----
443/tcp ALLOW Anywhere
22 ALLOW Anywhere
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere (v6)
22 ALLOW Anywhere (v6)
22/tcp ALLOW Anywhere (v6)
80/tcp ALLOW Anywhere (v6)
21/tcp ALLOW Anywhere (v6)
443/tcp ALLOW OUT Anywhere
443/tcp ALLOW OUT Anywhere (v6)
当我使用在线端口检查器网站查看它是否打开时,它显示 443 已关闭,列表中的所有其他端口都已打开。此时我不知道还能做什么来打开端口 443,非常感谢您的帮助。我正在运行 Ubuntu。
答案1
首先,验证您是否可以从本地计算机进行连接...您可以直接通过 telnet 连接到端口 443,无论是在本地主机 (127.0.0.1) 上,还是在您的计算机的 IP 地址上。您至少应该获得一个答案(即验证该端口上是否有监听器)。
例如 - 这就是你不要想:
$ telnet 127.0.0.1 443
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
示例 - 这确认有东西正在监听(正如它所说,您可以使用控制右括号返回到 telnet 提示符):
$ telnet 127.0.0.1 443
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
注意:您也可以通过只检查 netstat 来“简化”此方法...您主要只是寻找“LISTEN”状态:
$ netstat -antl | grep 443
tcp 0 0 127.0.0.1:52421 127.0.0.1:443 TIME_WAIT
tcp6 0 0 :::443 :::* LISTEN
要实际检查 SSL 握手,您可以使用 openssl:
$ openssl s_client -connect 127.0.0.1:443
CONNECTED(00000003)
...
您应该能够从外部检查类似的项目...特别是查看端口是否打开或者您是否可以完成 SSL 握手。
注意:如果您的本地网络位于非公共 IP 空间(例如 RFC1918 网络地址),则意味着您的机器前面的某个地方有一个 NAT……通常在路由器上。这些地址为 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16。如果是这种情况,您还必须打开和/或向前路由器或网络防火墙上的地址。