题 即使浏览器中的数据看起来很好,Apache也会产生大量仅支持SSL的错误


我为我在localhost上运行的网站安装了自签名SSL证书。似乎到达浏览器的数据对于SSL和非SSL版本都是完整和正确的,但是我得到了很多apache错误输出,这似乎表明不是这样。

当我点击刷新时,我立即在日志中获得了几行

AH01964: Connection to child 0 established

孩子2,6,4等也可能出现,没有特别的顺序。

在接下来的几秒钟里,我得到了其中几个

(70014)End of file found: [client 127.0.0.1:32839] AH01991: SSL input filter read failed.
[client 127.0.0.1:32840] AH01382: Request header read timeout

我假设这些行的多样性是由脚本,CSS等引起的,因为如果我去'查看源'并刷新  窗口,我得到其中一个

AH01964: Connection to child 4 established

......别无其他。所有这些仅适用于https连接。 http的日志是静默的。

什么都有 其实 错误?我再说一遍,内容似乎完全正确地服务,这似乎与日志中的“读取失败”和“超时”语言相矛盾。 这些错误只是噪音还是我必须修理一下?

如果它们只是无害的噪音,我该如何关闭它们?


这是我如何设置一切。 (我从各种教程中逐步得到了这个过程而没有完全理解它。)

在/ etc / hosts我有

127.0.0.1 x.com

我通过以下脚本创建了一个自签名的ssl证书

openssl genrsa -des3 -out x.com.key 2048
openssl req -new -key x.com.key -out x.com.csr
cp x.com.key x.com.key.org
openssl rsa -in x.com.key.org -out x.com.key
openssl x509 -req -days 3650 -in x.com.csr -signkey x.com.key -out x.com.crt
chmod 400 x.com.{key,crt,csr}
sudo chown www-data x.com.{key,crt,csr}
sudo mv x.com.{key,crt,csr} /path/to/website/

在这个过程中我输入

Common Name (e.g. server FQDN or YOUR name) []:x.com

我有两个 <VirtualHost x.com:80> 和a <VirtualHost x.com:443> 在sites-enabled / 000-default.conf中设置,它们之间的区别在于此部分:

SSLEngine on
SSLCertificateFile /path/to/website/x.com.crt
SSLCertificateKeyFile /path/to/website/x.com.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog ${APACHE_LOG_DIR}/x.com.ssl.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

他们有这个共同点:

LogLevel info

6
2018-01-07 22:12






答案:


这个问题似乎是一样的 这个,这显然是我在诊断同样的事情时发现的。

该问题是由基于名称(或通配符catchall)设置为VirtualHost而不是IP地址引起的。问题是域名只有在建立连接后才会传递给Web服务器,SSL / TLS连接必须在哪个阶段处于活动状态,因此服务器需要根据可用的最小信息选择正确的SSL密钥。这是该虚拟主机的IP地址。

有关更多详细信息和示例配置信息 Apache网站,但基本上你想改变 <VirtualHost x.com:443> 至 <VirtualHost 1.2.3.4:443> 其中使用该主机/接口的IP地址。


2
2018-02-09 18:58



较新的Apache版本具有SNI 它允许在同一IP上使用多个VirtualHost,因此通配符虚拟主机应该可以工作。但是,这些信息消息仍然存在。 - partofthething
哇!我一直想知道这一个。我把IP地址而不是外卡(*:443并且它完全没有警告。 - Alexis Wilke


正如其他人所说,这些消息会被记录,因为你的 LogLevel 被设置为 info。如果你不想要这些特定的消息,但仍然想要 info 级别日志,您可以在apache配置中重新配置:

LogLevel info ssl:warn


5
2018-04-26 07:49



错误:LogLevel在错误记录中采用一个参数,详细级别(apache-2.2.32)。此选项仅适用于Apache 2.3及更高版本。看到 serverfault.com/a/158369/120479 - Will Sheppard
这是 究竟 我正在寻找的信息 - 谢谢! - FKEinternet


LogLevel info 很可能是原因,它绝对看起来像无害的噪音。

您需要将日志记录设置为详细的任何特定原因,或者您可以将其拨回到类似的内容 notice 要么 warn


1
2018-01-07 23:54



是的我可以降低日志级别但是a)我确实想要一些信息级别的消息,并且b)他们似乎在说出错了。我不想在地毯下刷它。 - spraff