我们有 Apache 2.16 Web 服务器,通过 X509 客户端证书(它们来自芯片卡)进行身份验证。以下是目录配置:
<Directory /directory>
SSLVerifyClient optional
SSLVerifyDepth 5
SSLRequireSSL
SSLOptions +StdEnvVars +ExportCertData +OptRenegotiate
</Directory>
身份验证运行良好,但有时当用户尝试上传文件时,上传会失败,我们在 apache 错误日志中发现此问题:
[Thu Dec 06 09:14:25 2012] [error] [client 80.82.235.94] Re-negotiation request failed
[Thu Dec 06 09:14:25 2012] [error] SSL Library Error: 336068931 error:14080143:SSL routines:SSL3_ACCEPT:unsafe legacy renegotiation disabled
[Thu Dec 06 09:14:25 2012] [error] [client 80.82.235.94] request body exceeds maximum size (131072) for SSL buffer
[Thu Dec 06 09:14:25 2012] [error] [client 80.82.235.94] could not buffer message body to allow SSL renegotiation to proceed
但即使使用 SSLRenegBufferSize 指令,用户仍然会遇到错误(纯属随机)。最大的问题是我甚至无法重现该错误。http 客户端(浏览器)可能是我和用户之间的区别,我在 Linux 下只有 Firefox 17,我正在收集用户的信息。
SSLVerifyClient 的可选值是必需的,因为它允许我们的软件处理用户没有证书或证书过期的情况。否则浏览器只会显示技术错误页面,不适合我们的用户。
答案1
问题是随机发生的,因为这仅在需要重新协商时才会发生,顺便说一下,这篇文章应该包含该问题的答案
通过 SSL 上传超过 128KB 的文件时出现“请求实体太大”错误