使用 SSL 加密时,我的 Apache 2.4.18 服务器出现问题。我的服务器设置是:Apache 服务器将端口 80 (http) 上的所有内容重定向到端口 443 (ssl),我通过不同的站点配置实现了这一点。
现在我的问题是:如果我打开链接https://www.example.com,我得到了我想要的网站。
但如果我打开https://example.com,我收到错误:ERR_CONNECTION_REFUSED
为什么会这样?我该如何解决?
SSL 的虚拟主机文件:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/letsencrypt/live/footprintgaming.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/footprintgaming.de/privkey.pem
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4
答案1
footprintgaming.de
有一个指向 89.31.143.1 的 A 记录,该记录似乎位于 AS15598。
www.footprintgaming.de
最终解析为 46.5.192.81,它似乎位于 AS29562。
两者似乎都没有任何相关的 IPv6 地址记录。
“连接被拒绝”表示 TCP SYN 已用 TCP RST/ACK 进行响应。这种情况通常发生在没有绑定到相关 IP 地址和 TCP 端口的监听套接字时,但也可能由防火墙引起。
我能够通过端口 80 顺利连接这两个设备。
我可以通过端口 443 顺利连接到后者,但无法连接到前者。这与您的结果相符。
要检查的一些事项:
- Apache 实例是否在监听端口 443?
netstat -an | grep 443
将是一个开始。 - 是否有任何相关的防火墙规则?假设有一个中等现代的 Linux,请
iptables -L -n
从那里开始。其他操作系统将类似但又有所不同。 - 模块
mod_ssl
是否真的加载了?尝试一下apachectl -M
(然后看看这里)。 - 很愚蠢,但已知会发生这种情况:您在编辑 Apache 配置后重新加载了它吗?
apachectl configtest
应该apachectl graceful
是你的朋友。 ServerName
该虚拟主机的在哪里?apachectl -S
也请检查您的输出。(这通常会导致您获取错误的内容,或者在这种情况下获取错误的 HTTPS 证书,而不是连接被拒绝错误,但我将其包括在内是因为您可能会在获得 TCP 连接时遇到该错误...)