通过 Apache、Gentoo 向 SVN 进行大型提交时出现“SSL 错误解析 tlsext”

通过 Apache、Gentoo 向 SVN 进行大型提交时出现“SSL 错误解析 tlsext”

这仅在大型提交时发生(导致提交失败):

Apache 虚拟主机配置的相关部分

   <LimitExcept 获取 PROPFIND 选项报告>
      需要有效用户
   </LimitExcept>
   戴夫·斯维恩
   SVN路径 /home/svn/

提交结果:

传输文件数据................................svn:提交失败
(详情如下):
svn:PUT 的
'/!svn/wrk/48583f7d-0e01-410d-8941-33d2ba3574b4/WAP/.../htdocs/images/rt.gif':
SSL 协商失败:SSL 错误:解析 tlsext(https://...)

我在这里找到了对它的引用:http://code.google.com/p/support/issues/detail?id=1395

说明 OpenSSL 应该使用 TLS 扩展进行编译,但就我而言,它在开始时不会出错,仅在大量提交时出错。

有什么想法吗?谢谢

答案1

我没有遇到过这个问题,但我花了一段时间在谷歌上搜索,发现它可能是在 Apache 2.2.12 或 13 中引入的。建议降级到 2.2.11 可能会修复它,以及设置SSL协议-ALL +SSLv2 +SSLv3在您的 Apache 配置中。似乎没有一个是明确的。祝你好运!希望你能找到解决方案。

http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2393204

答案2

更新

在阅读有关此问题的 http-dev 线程后,存档于http://www.gossamer-threads.com/lists/apache/dev/375633,这个问题似乎是由客户端 OpenSSL 库中有关如何处理 SSL Tickets/ID 的错误引起的,这解释了为什么错误不会立即发生,而是需要几秒钟到几分钟的时间。这个解决方案是在 11 月 2 日确定的,也就是 OpenSSL 0.9.8l 发布前三天。该线程没有明确说明是否/何时将修复应用于 OpenSSL,但我认为我们可以预期在 0.9.8m 中修复它,我相信 m-beta 变更日志中的这个条目涵盖了这一点:

*) 修复了无状态会话恢复处理。在发出并尝试解密票证时使用 initial_ctx,以防它在服务器名称处理期间发生变化。在尝试无状态会话恢复时使用非零长度的会话 ID:这使得可以确定恢复是否在收到服务器问候后立即发生(OpenSSL 中的几个地方巧妙地假设了这一点),而不是在握手的稍后阶段。

原始帖子

我在 Gentoo 上的 Apache-2.2.14 上遇到了类似的问题。作为参考,以下是我的 USE 标志:

[ebuild   R   ] dev-libs/openssl-0.9.8l-r2  USE="zlib -bindist -gmp -kerberos -sse2 -test" 4,082 kB
[ebuild   R   ] www-servers/apache-2.2.14-r1  USE="ssl -debug -doc -ldap (-selinux) -static -suexec -threads" APACHE2_MODULES="actions alias auth_basic auth_digest authn_dbd authn_default authn_file authz_default authz_groupfile authz_host authz_user autoindex dav dav_fs dav_lock dbd deflate dir env expires headers include info log_config logio mime mime_magic negotiation proxy proxy_balancer proxy_connect proxy_http rewrite setenvif status unique_id userdir -asis -authn_alias -authn_anon -authn_dbm -authz_dbm -authz_owner -cache -cern_meta -charset_lite -disk_cache -dumpio -ext_filter -file_cache -filter* -ident -imagemap -log_forensic -mem_cache -proxy_ajp -proxy_ftp -speling -substitute -usertrack* -version -vhost_alias" APACHE2_MPMS="prefork -event -itk -peruser -worker" 5,088 kB
[ebuild   R   ] net-misc/neon-0.29.0  USE="expat nls ssl zlib -doc -gnutls -kerberos -libproxy -pkcs11" LINGUAS="-cs -de -fr -ja -nn -pl -ru -tr -zh_CN" 859 kB
[ebuild   R   ] dev-util/subversion-1.6.6  USE="apache2 bash-completion dso nls perl python ruby webdav-neon -berkdb -ctypes-python -debug -doc -emacs -extras -gnome-keyring -java -sasl -test -vim-syntax -webdav-serf" 5,384 kB

这种情况发生在 SSLProtocol 与TLSv1所包含的

如果我调整我的SSLProtocol以删除TLSv1,我会收到一个新的错误:

svn: PUT of '/!svn/wrk/0b9f5a96-15aa-11df-ad6a-0f71b873281b/project/trunk/path/btn_Cancel.gif': SSL handshake failed: SSL error: bad decompression (https://svn.mudbugmedia.com)

这大约与我遇到“解析 tlsext”错误同时发生。

答案3

该问题很可能是因为在 Apache httpd 2.2.12 - 2.2.14 和 OpenSSL 0.9.8f - 0.9.8l 中使用了多个启用了 SSL 的 VirtualHosts 造成的。

下列修补似乎为我解决了这个问题。

相关内容