错误代码:nginx ubuntu服务器上的ssl_error_rx_record_too_long

时间:2014-08-01 13:21:05

标签: ssl nginx ubuntu-13.10

我有一个网站,它在一些旧的ubuntu服务器上使用apache完美运行,并且还有https。但是现在由于某些原因我需要转移到不同的(具有高配置的新ubuntu服务器)服务器并尝试使用Nginx来服务我的站点,因此安装了nginx(nginx/1.4.6 (Ubuntu))。以下是我的nginx.conf文件设置

server {
  listen 8005;

  location / {
    proxy_pass http://127.0.0.1:8001;
  }

  location /static/ {
    alias /root/apps/project/static/;
  }

  location /media/ {
    alias  /root/apps/media/;
  }

}

# Https Server
server {
      listen 443;
      location / {
#            proxy_set_header Host $host;
#            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#            proxy_set_header X-Forwarded-Protocol $scheme;
#            proxy_set_header X-Url-Scheme $scheme;
#            proxy_redirect off;
            proxy_pass http://127.0.0.1:8001;
         }
      server_tokens off;

      ssl                  on;
      ssl_certificate      /etc/ssl/certificates/project.com.crt;
      ssl_certificate_key  /etc/ssl/certificates/www.project.com.key;
      ssl_session_timeout  20m;
      ssl_session_cache    shared:SSL:10m;  # ~ 40,000 sessions
      ssl_protocols        SSLv3 TLSv1; # SSLv2
      ssl_ciphers          ALL:!aNull:!eNull:!SSLv2:!kEDH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+EXP:@STRENGTH;
      ssl_prefer_server_ciphers on;


}

由于我已经在另一台服务器上运行https证书(project.com.crt)和密钥(www.project.com.key),我刚刚将它们复制到新服务器(截至目前不包含任何域名,并且只有IP)并放在路径/etc/ssl/certificates/并尝试直接使用它们。现在我重新启动了Nginx并尝试使用23.xxx.xxx.xx:8005访问我的IP https:// 23.xxx.xxx.xx:8005,我在firefox中收到以下错误

Secure Connection Failed

An error occurred during a connection to 23.xxx.xxx.xx:8005. SSL received a record that exceeded the maximum permissible length. (Error code: ssl_error_rx_record_too_long)

    The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
    Please contact the website owners to inform them of this problem. Alternatively, use the command found in the help menu to report this broken site.

但是当我在没有https的情况下访问IP时,我可以为我的网站提供服务。

上面的nginx conf文件中我的Https设置有什么问题? 我们是否只能通过复制和粘贴某个文件夹来提供证书文件?我们是否需要为新服务器创建任何额外的证书?

2 个答案:

答案 0 :(得分:12)

更改

listen 443;

listen 443 ssl;

并摆脱这一行

ssl on;

这应该可以解决您的SSL问题,但您的配置中似乎有几个问题。

答案 1 :(得分:1)

  

上面的nginx conf文件中我的Https设置有什么问题?

您没有SSL / TLS服务器侦听客户端尝试连接的端口。发生ssl_error_rx_record_too_long是因为客户端的SSL堆栈正在尝试将HTTP响应解释为SSL / TLS数据。 Wireshark跟踪应该确认问题。查看原始字节(按照流)。

我不知道为什么配置不正确。也许拥有Nginx配置体验的人可以提供帮助。或者,Server FaultWebmaster Stack Exchange上的人。