apache + ssl 的问题:长度不匹配错误和偶尔的错误请求

apache + ssl 的问题:长度不匹配错误和偶尔的错误请求

我们最近将一台服务器从 Slicehost 迁移到 linode,我们将配置从一台服务器复制到另一台服务器。一切都运行正常,除了我们得到以下信息:

偶尔会出现“Bad Request”的错误,这个错误并不常见,你可能使用一整天都看不到它,而第二天就会经常发生。

除此之外,很多时候,尽管请求运行正常,我们也会出现一些错误。

使用 ssldump 我们得到:

New TCP connection #1: myip(39831) <-> develserk(443)
1 1  0.2316 (0.2316)  C>S SSLv2 compatible client hello
  Version 3.1 
  cipher suites
  Unknown value 0x39  
  Unknown value 0x38  
  Unknown value 0x35  
  TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA  
  TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA  
  TLS_RSA_WITH_3DES_EDE_CBC_SHA  
  SSL2_CK_3DES  
  Unknown value 0x33  
  Unknown value 0x32  
  Unknown value 0x2f  
  SSL2_CK_RC2  
  TLS_RSA_WITH_RC4_128_SHA  
  TLS_RSA_WITH_RC4_128_MD5  
  SSL2_CK_RC4  
  TLS_DHE_RSA_WITH_DES_CBC_SHA  
  TLS_DHE_DSS_WITH_DES_CBC_SHA  
  TLS_RSA_WITH_DES_CBC_SHA  
  SSL2_CK_DES  
  TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA  
  TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA  
  TLS_RSA_EXPORT_WITH_DES40_CBC_SHA  
  TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5  
  SSL2_CK_RC2_EXPORT40  
  TLS_RSA_EXPORT_WITH_RC4_40_MD5  
  SSL2_CK_RC4_EXPORT40  
1 2  0.2429 (0.0112)  S>C  Handshake
      ServerHello
        Version 3.1 
        session_id[32]=
          9a 1e ae c4 5f df 99 47 97 40 42 71 97 eb b9 14 
          96 2d 11 ac c0 00 15 67 4e f3 7d 65 4e c4 30 e9 
        cipherSuite         Unknown value 0x39
        compressionMethod                   NULL
1 3  0.2429 (0.0000)  S>C  Handshake
      Certificate
1 4  0.2429 (0.0000)  S>C  Handshake
      ServerKeyExchange
1 5  0.2429 (0.0000)  S>C  Handshake
      ServerHelloDone
1 6  0.4965 (0.2536)  C>S  Handshake
      ClientKeyExchange
1 7  0.4965 (0.0000)  C>S  ChangeCipherSpec
1 8  0.4965 (0.0000)  C>S  Handshake
1 9  0.5040 (0.0075)  S>C  ChangeCipherSpec
1 10 0.5040 (0.0000)  S>C  Handshake
ERROR: Length mismatch

来自 apache error.log

[Fri Aug 27 14:50:05 2010] [debug] ssl_engine_io.c(1892): OpenSSL: I/O error, 5 bytes expected to read on BIO#b80c1e70 [mem: b8100918]

服务器是 ubuntu 10.04.1

Apache 版本是 2.2.14-5ubuntu8

openssl 版本是 0.9.8k-7ubuntu8

答案1

看起来您的 SSL 握手在密码协商期间中断了。

我会检查您的 SSLCipherSuite Apache 配置指令。下面的 URL 指向此指令的 Apache 文档。

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

双方必须支持一组通用的密码,否则连接将失败。

希望这可以帮助。

答案2

仅列出了 443 主机的 conf 文件,没有列出 80 主机的 conf 文件。我已将其复制如下:

名称virtualHost *:80

文件根目录 /var/www/

服务器名称 yeswedeal.com:80

ProxyPass /http://yeswedeal.com/ ProxyPassReverse / http//yeswedeal.com/

CustomLog /var/log/apache2/myservername-access.log 合并的ErrorLog /var/log/apache2/myservername-error.log

如果我理解正确的话,重写语法应该放在 *:80 站点,而不是 *:443 站点。对吗?

相关内容