在通过SSL上传超过128KB的文件时,请求实体太大错误

我们有一个Java弹簧框架的Web门户设置。 它在tomcat应用服务器上运行。 Portal通过连接到Tomcat的Apache Web服务器通过JK连接器提供服务。 整个门户使用Apache的443端口启用HTTPS。 Apache版本是:Apache / 2.4.2(Unix)。 它是Apache web服务器的最新稳定版本。

每当我们尝试上传超过128 KB的文件到门户网站,我们正面临着413错误:

Request Entity Too Large The requested resource /teamleadchoachingtracking/doFileUpload does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit. 

在Apache错误日志中,我们得到以下错误:

 AH02018: request body exceeds maximum size (131072) for SSL buffer AH02257: could not buffer message body to allow SSL renegotiation to proceed 

我们search了谷歌,并有build议把SSLRenegBufferSize作为一些像10MB的高价值。 基于这些build议,我们在httpdconfiguration文件的虚拟主机部分放入了以下条目:

 <Directory "/teamleadchoachingtracking/doFileUpload/"> SSLRenegBufferSize 10486000 </Directory> 

但仍然错误仍然存​​在。 我们还指定了SSLVerifyClient none,但仍在重新协商。

这是一个非常不一致和令人沮丧的错误。 任何帮助将不胜感激。 提前谢谢了。

我设法解决它通过在Apache的httpd.conf文件中的某些configuration。 以下是示例configuration:

 <Location "/calibration"> SSLRenegBufferSize 10486000 </Location> 

之前我没有给出正确的configuration。 关键是导致http 413错误的确切的URL位置。 在位置指令中,需要给出确切的URL位置。 SSLRenegBufferSize是在发生重新协商的情况下以字节为单位指定最大缓冲区大小的参数。 我已经把它设置为10 MB。 Apache默认是128KB。

SSL重新协商期间发生此问题。 除了将Apache上的重协商缓冲区大小设置为非常高的数字之外,还有其他几个选项:

  • configuration您的(虚拟)主机只使用一个authenticationscheme来避免重新协商
  • 使用支持HTTP 1.1 Expect Header的客户端

请参阅https://stackoverflow.com/questions/14281628/ssl-renegotiation-with-client-certificate-causes-server-buffer-overflow