我在 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 未安装!