将apache从2.2升级到2.4后出现SSL错误

Debian服务器从稳定版升级到testing版后,svn客户端不能再连接到subversion服务器。

我们的svn客户端需要使用客户端证书进行连接,并且subversion服务器在Apache下托pipe。 Subversion从1.6.17升级到1.7.13。 Apache2从2.2.22升级到2.4.6。

svn客户端在更新时收到以下错误消息:

Updating '.': svn: E175002: Unable to connect to a repository at URL 'https://myserver/svn/myproject/dev/trunk' svn: E175002: OPTIONS of 'https://myserver/svn/myproject/dev/trunk': SSL handshake failed: SSL error: An unexpected TLS packet was received. (https://myserver) 

在Apache服务器上,只有一条消息出现在other_vhosts_access.log中:

 myserver.localdomain:80 127.0.0.1 - - [06/Jan/2014:19:02:57 -0500] "\x16\x03" 400 0 "-" "-" 

这里是subversion虚拟目录的configuration:

 <VirtualHost *:443> ServerName myservername SSLEngine On SSLCertificateFile /etc/apache2/ssl/myservercert.crt SSLCertificateKeyFile /etc/apache2/ssl/myservercert.key SSLCACertificateFile /etc/apache2/ssl/myserver-CA.crt SSLVerifyClient require SSLVerifyDepth 10 <Location /svn > SSLRequireSSL SSLRequire %{SSL_CLIENT_S_DN_C} eq "XX" and %{SSL_CLIENT_S_DN_ST} eq "XX" and %{SSL_CLIENT_S_DN_O} eq "XX" and %{SSL_CLIENT_S_DN_OU} eq "XX" DAV svn SVNParentPath /root/subversion/root Require valid-user AuthType Basic AuthName "Subversion Repository" AuthUserFile /root/subversion/.apache-htpasswd AuthzSVNAccessFile /root/subversion/.apache-auth </Location> </VirtualHost> 

任何人都可以指出我正确的方向来解决这个问题吗? 谢谢。

将Apache从2.2升级到2.4时,启用了站点的文件链接必须以.conf结尾,过去他们不需要特定的文件扩展名。

如果站点可用的站点configuration文件名没有扩展名.conf,则可能需要重命名它,然后运行:a2ensite filename将其添加到启用站点的站点。

例如,如果您的站点configuration文件被称为MySite:

 cd /etc/apache2 rm sites-enabled/MySite cd sites-available mv MySite MySite.conf a2ensite MySite apache2ctl configtest apache2ctl restart 

所以,上面的问题是由于Apache2服务启动时我的站点configuration没有被拾起。

我强烈怀疑Apache正在应答端口443上的HTTP而不是HTTPS。 用TELNET连接到443端口,然后做一个GET / ,我怀疑你会得到一个响应。 如果你这样做,那告诉你,Apache正在监听普通的HTTP。

我不熟悉Debian的configurationdevise,所以我很难告诉你从哪里开始寻找。 如果你发现你在端口443上得到了未encryption的HTTP,那么服务器可能出于某种原因没有加载mod_ssl