如何解决 apache2 中的错误“SSL 收到的记录超过了最大允许长度”?

如何解决 apache2 中的错误“SSL 收到的记录超过了最大允许长度”?

我在 Apache 2 中刚刚设置的网站上收到以下错误:

SSL 收到的记录超出了最大允许长度

我所见过的修复建议修复方法是确保默认 ssl 站点已启用,我已经这样做了,但仍然收到错误。

答案1

这通常意味着您正在向 HTTP 服务发送 HTTPS 请求。该消息来自浏览器,抱怨它无法完成预期的 SSL 握手。

你有

SSLEngine on

是否为该虚拟主机进行了配置?

答案2

如果您的虚拟主机配置不完整并且依赖(供应商安装)为您完成设置,则可能会出现此错误ssl.conf。例如,如果您有类似这样的配置(RHEL7/httpd 2.4):

/etc/httpd/conf.d/confluence.conf

<VirtualHost *:443>
    ServerName  localhost.localdomain
    DocumentRoot /var/www/html
</VirtualHost>

/var/www/html/index.html

helo

然后因为confluence.conf按字母顺序在 之前ssl.conf,SSL 虚拟主机尚未被评估,并且 httpd 将使用端口 443 来提供未加密的数据,您可以像这样证明:

[root@localhost ~]# curl https://localhost.localdomain 
curl: (35) SSL received a record that exceeded the maximum permissible length.
[root@localhost ~]# curl http://localhost.localdomain:443   
helo

在这种情况下,我们可以看到第二个curl有效,因为端口 443 上的连接是透明的http

如果我们将其重命名confluence.conf为按字母顺序排列ssl.conf,则 SSL 端口将被设置并且一切开始工作,例如:

[root@localhost vagrant]# curl https://localhost.localdomain -k
curl: (35) SSL received a record that exceeded the maximum permissible length.
[root@localhost vagrant]# mv /etc/httpd/conf.d/confluence.conf /etc/httpd/conf.d/t.conf         
[root@localhost vagrant]# systemctl restart httpd
[root@localhost vagrant]# curl https://localhost.localdomain -k
helo

我建议解决这个问题是mod_ssl在指令中进行配置VirtualHost

<VirtualHost *:443>
    ...
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
</VirtualHost>

或者,将包含定义的文件重命名VirtualHost为按字母顺序排列在后面ssl.conf也是可行的,但这种技术很容易被忽视。

答案3

回复:从 更改为<VirtualHost 123.456.789.0:443><VirtualHost default:443>我发现 CentOS6 上的 Apache 2.2.15 完全相反;当我从 更改为<VirtualHost _default_:443><VirtualHost 123.456.789.0:443>

我在 Apache 重启时收到一个错误:

[错误] VirtualHost 123.456.789.0:443 - 不支持将 * 端口和非 * 端口与 NameVirtualHost 地址混合,结果将无法定义

但证书已送达,并且一旦应用例外,网站就会加载。

这一切都是神奇的魔法……

答案4

导致此问题的另一个原因是:Apache 配置了 SSL 并监听端口 443,但是Apache mod_ssl 未安装!

相关内容