error_log 中的内容是什么?请求中的方法无效 \x16\x03\x01

error_log 中的内容是什么?请求中的方法无效 \x16\x03\x01

我发现了这一行 Invalid method in request \x16\x03\x01 on error_log file ,以及其他一些类似的行,例如:

[Wed Oct 27 23:16:37 2010] [error] [client 187.117.240.164] Invalid URI in request x\xb2\xa1:SMl\xcc{\xfd"\xd1\x91\x84!d\x0e~\xf6:\xfbVu\xdf\xc3\xdb[\xa9\xfe\xd3lpz\x92\xbf\x9f5\xa3\xbbvF\xbc\xee\x1a\xb1\xb0\xf8K\xecE\xbc\xe8r\xacx=\xc7>\xb5\xbd\xa3\xda\xe9\xf09\x95"fd\x1c\x05\x1c\xd5\xf3#:\x91\xe6WE\xdb\xadN;k14;\xdcr\xad\x9e\xa8\xde\x95\xc3\xebw\xa0\xb1N\x8c~\xf1\xcfSY\xd5zX\xd7\x0f\vH\xe4\xb5(\xcf,3\xc98\x19\xefYq@\xd2I\x96\xfb\xc7\xa9\xae._{S\xd1\x9c\xad\x17\xdci\x9b\xca\x93\xafSM\xb8\x99\xd9|\xc2\xd8\xc9\xe7\xe9O\x99\xad\x19\xc3V]\xcc\xddR\xf7$\xaa\xb8\x18\xe0f\xb8\xff

第一个错误出现几秒钟后,Apache 顺利重启……

答案1

关于第一个错误,可能是您的网络服务器错误地尝试使用未加密的 HTTP 来发送来自端口 443(HTTPS)的请求。

要测试这一点,请远程登录到 Web 服务器的主机名或 IP 地址上的端口 443,然后发出:GET / HTTP/1.0。假设 IP 地址是 10.0.0.1,您使用的是 Windows,并且安装了 Windows telnet 客户端(顺便说一句,这很糟糕 - 我更喜欢安全CRT或者油灰(免费),在命令提示符窗口中输入以下内容,然后按 Enter:

telnet 10.0.0.1 443

建立连接后(您应该看到一个带有闪烁光标的空白屏幕),输入:

GET / HTTP/1.0

...然后按两次 Enter。

快速提示:建立 telnet 会话后,您将无法看到您输入的内容,即使您的击键仍会发送到服务器。在 Windows telnet 客户端中,名为“localecho”的设置控制此行为,但默认情况下它是关闭的。

快速提示 #2:退格键“行不通”,因此请小心不要输入错误,否则您将需要从头开始。

如果您返回纯文本、可读的 HTML,则您的虚拟主机配置可能存在一些问题。

不过,我不确定第二个错误,即使是上述情况,它也不应该导致 Apache 正常重启......

答案2

经过一番研究,我们发现 apache 2.2.21 及以下版本在返回错误 400 时存在漏洞。

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0053

如果尚未更新,请将您的 apache 更新到 2.2.22 或更高版本。

答案3

修复了我的错误

代替

server {
    listen 443;

使用以下内容告诉服务器您实际上正在使用 443 来监听 ssl/https 请求。

server {
  listen *:443 default_server ssl; 

相关内容