获得413个错误在IIS上使用相同的HTTPS客户端证书的并发会话(Getting 413 erro

2019-07-21 05:09发布

我有以下问题。

我主持这接受HTTPS与客户端证书请求在IIS 8 WCF应用程序。 这个服务接受其可以改变尺寸(从几个字节到1 GB)和并行接收的大部分时间POST消息。

客户端得到一个413请求实体在以下情况下,过大的反应:

  • 当多个连接使用相同的客户端证书打开,许多小文件上传。 在这种情况下,一个请求成功和所有其他失败,413错误。

这一问题可以通过设置来解决uploadReadAheadSize值到比所有的并行呼叫大小的总和越大的值system.webServer/serverRuntime的配置的部分,但是这会导致服务器分配的内存总量为读先行缓存为每个这导致许多并发呼叫的情况下耗尽内存的服务器调用。

如果来电与不同的客户端证书或上传一个大文件的情况下,使我的配置工作

我已经阅读了IIS 6有设置选项SSLAlwaysNegoClientCert在配置解决类似的bug。 我曾尝试解决方法来设置这个值,但使用的是IIS 8.0没有成功。 我也曾尝试关闭SSL客户端缓存禁用SSL会话恢复,但并没有解决我的问题也是如此。

什么可能导致413个错误? 有没有什么办法,以实现与客户端证书到同一台服务器多个并行上传不使用服务器的整个存储器。

Answer 1:

只是一个猜测:

如果请求重新协商客户端 ,请求实体主体必须使用SSL预加载预加载。 SSL预加载功能将使用应将UploadReadAheadSize数据库属性,以用于ISAPI扩展的价值。 然而,如果应将UploadReadAheadSize比内容长度小,则返回一个HTTP 413错误,并且连接被关闭,以防止死锁。 (死锁的发生是因为客户正在等待完成发送请求实体,而服务器等待重新协商来完成,但重新协商要求客户端能够发送数据,它不能做的)。

(从文章客户端无法重新协商请求并返回一个HTTP 413错误(IIS 6.0) )。

客户端重新协商发生时未设置SSLAlwaysNegoClientCert,所以使用OpenSSL检查是否启用它(见这个问题 )。 我没有使用IIS 8,但在IIS 7.5,从使SSLAlwaysNegoClientCert的两种方式的问题,你链接为我工作。



文章来源: Getting 413 errors on IIS with concurrent sessions using the same HTTPS client certificate
标签: wcf iis ssl iis-8