通过 Apache、Gentoo 大量提交到 SVN 时出现“SSL 错误解析 tlsext”

Kar*_* T. 10 svn gentoo apache-2.2

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

来自 Apache 虚拟主机配置的 Revelant 部分

   <LimitExcept 获取 PROPFIND 选项报告>
      需要有效用户
   </限制除外>
   大卫·斯文
   SVNPath /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 扩展进行编译,但在我的情况下,它在开始时不会出错,只是在大量提交时出错。

有任何想法吗?谢谢

Jef*_*der 7

我没有遇到过这个问题,但是我花了一段时间google了一下,发现它可能是在Apache 2.2.12或13中引入的。建议降级到2.2.11可能会解决它,以及设置SSLProtocol - Apache 配置中的ALL +SSLv2 +SSLv3。没有一个似乎是确定的。祝你好运!希望你能找到解决办法。

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


Gab*_*esy 5

更新

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

*) 修复了无状态会话恢复处理。在发布和尝试解密票证时使用 initial_ctx 以防它在服务器名称处理期间发生变化。在尝试恢复无状态会话时使用非零长度的会话 ID:这可以确定在接收到服务器 hello 后是否立即恢复(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
Run Code Online (Sandbox Code Playgroud)

这发生在 SSLProtocol 与TLSv1包含的任何组合

如果我调整 my SSLProtocolto remove 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)
Run Code Online (Sandbox Code Playgroud)

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