Apache 不接受部分域的 SSL

Apache 不接受部分域的 SSL

使用 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 连接时遇到该错误...)

相关内容