ssl_error_rx_record_too_long和Apache SSL

时间:2008-09-23 06:07:10

标签: apache configuration ssl webserver mod-ssl

我有一位客户试图访问我的某个网站,他们不断收到此错误> SSL_ERROR_RX_RECORD_TOO_LONG

他们在所有浏览器,所有平台上都收到此错误。我根本无法重现这个问题。

我的服务器和我本人位于美国,客户位于印度。

我用Google搜索了问题,主要来源似乎是SSL端口在HTTP中发言。我检查了我的服务器,但这没有发生。我试过了the solution mentioned here,但客户说它没有解决问题。

任何人都可以告诉我如何解决这个问题,或者我如何重现这个???

解决方案

原来客户配置错误的本地代理!

希望能帮助任何人发现这个问题,试图在将来调试它。

15 个答案:

答案 0 :(得分:153)

link mentioned by Subimage对我来说是正确的。它建议更改虚拟主机标记,即从<VirtualHost myserver.example.com:443>更改为<VirtualHost _default_:443>

  

错误代码:ssl_error_rx_record_too_long

     

这通常意味着您服务器上的SSL实施不正确。该错误通常是由服务器管理员需要调查的服务器端问题引起的。

     

以下是我们建议尝试的一些事项。

     
      
  • 确保您的服务器上已打开并启用了端口443。这是https通信的标准端口。

  •   
  • 如果SSL使用的是非标准端口,则FireFox 3有时会出现此错误。确保SSL在端口443上运行。

  •   
  • 如果使用Apache2,请检查您是否使用端口443进行SSL。这可以通过设置ports.conf文件来完成,如下所示

    Listen 80
    Listen 443 https
    
  •   
  • 确保您没有多个共享相同IP的SSL证书。请确保所有SSL证书都使用自己的专用IP。

  •   
  • 如果使用Apache2,请检查您的vhost配置。有些用户报告说,将<VirtualHost>更改为_default_可解决错误。

  •   

这解决了我的问题。很少有我谷歌一个错误消息,并获得正确答案的第一个! : - )

除上述之外,这些是其他人发现导致此问题的其他一些解决方案:

  • 确保您的SSL证书未过期

  • 尝试指定密码:

    SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM:+SSLv3

答案 1 :(得分:108)

我的解决方案是apache 2中没有启用default-ssl ....只是放SSLEngine On

我必须执行a2ensite default-ssl,一切正常。

答案 2 :(得分:32)

在我的情况下,我不得不更改&lt; VirtualHost *&gt;回到&lt; VirtualHost *:80&gt; (这是Ubuntu的默认设置)。否则,端口443没有使用SSL并且正在将纯HTML发送回浏览器。

您可以非常轻松地检查这是否属于您的情况:只需连接到您的服务器http://www.example.com:443即可。如果你看到纯HTML,你的Apache根本就没有在端口443上使用SSL,很可能是由于VirtualHost配置错误。

干杯!

答案 3 :(得分:19)

在我的情况下,我忘了在配置中设置SSLEngine On。像这样,

<VirtualHost _default_:443>
  SSLEngine On
  ...
</VirtualHost>

http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslengine

答案 4 :(得分:8)

如果您在设置新的https vhost后出现错误并且配置似乎正确,请记住在sites-enabled中链接。

答案 5 :(得分:7)

老问题,但首先是Google的结果,所以这就是我必须做的事情。

安装了Apache的Ubuntu 12.04桌面

我安装Apache时安装了所有配置和mod_ssl,但它还没有在正确的位置链接。注意:以下所有路径均相对于 / etc / apache2 /

mod_ssl存储在./mods-available中,SSL网站配置位于./sites-available,您只需将这些链接指向./mods-enabled和{{1}中的正确位置即可}}

./sites-enabled

重启Apache,它应该可以工作。我试图访问https://localhost,因此您的结果可能因外部访问而异,但这对我有用。

答案 6 :(得分:4)

询问用户他们在浏览器中使用的确切网址。如果他们输入https://your.site:80,他们可能会收到ssl_error_rx_record_too_long错误。

答案 7 :(得分:4)

就我而言,虚拟主机文件中的IP地址错误。监听是443,节是<VirtualHost 192.168.0.1:443>但是服务器没有192.168.0.1地址!

答案 8 :(得分:3)

请参阅this link

我查看了所有的apache日志文件,直到找到实际错误(我已将<VirtualHost>_default_更改为fqdn)。当我修复此错误时,一切正常。

答案 9 :(得分:2)

在我的情况下,问题是https无法正确启动,因为Listen 443处于“IfDefine SSL”derective中,但我的apache并没有以-DSSL选项启动。解决方法是更改​​我的apachectl脚本:

$HTTPD -k $ARGV

为:

$HTTPD -k $ARGV -DSSL

希望能帮助某人。

答案 10 :(得分:1)

我的问题是由于VPN连接上的MTU值很低。

netsh interface ipv4 show inter

Idx  Met   MTU   State        Name
---  ---  -----  -----------  -------------------
  1 4275 4294967295  connected    Loopback Pseudo-Interface 1
 10 4250   **1300**  connected    Wireless Network Connection
 31   25   1400  connected    Remote Access to XYZ Network

修正: netsh interface ipv4 set interface“无线网络连接”mtu = 1400

这也可能是非VPN连接的问题......

答案 11 :(得分:1)

我搞乱了虚拟主机配置。请记住,您需要一个没有SSL的虚拟主机用于端口80,另一个虚拟主机使用SSL用于端口443.您不能在一个虚拟主机中同时使用这两个虚拟主机,因为webmin生成的配置尝试这样做。

答案 12 :(得分:0)

我在某些浏览器中遇到同样的问题,无法访问我的SSL网站。 我发现我必须向fireFox提供正确的代理(FireFox直接访问互联网)。

根据局域网配置(隧道,过滤,代理重定向),FireFox的“直接访问互联网”模式会引发此错误。

答案 13 :(得分:0)

您也可以尝试修复hosts文件。

将vhost文件保留为完全限定的域,并在hosts文件中添加主机名 / etc / hosts (debian)

ip.ip.ip.ip name name.domain.com

重新启动apache2后,错误应该消失。

答案 14 :(得分:0)

对我而言,解决方案是我的ddclient没有正确地完成任务......