Erro SSL com subversão após atualizar o apache de 2.2 para 2.4

2

Após a atualização de um servidor Debian de estável para teste, os clientes svn não podem mais se conectar ao servidor subversion.

Nossos clientes svn são obrigados a se conectar usando certificados de cliente e o servidor subversion é hospedado no Apache. O Subversion foi atualizado de 1.6.17 para 1.7.13. O Apache2 foi atualizado de 2.2.22 para 2.4.6.

O cliente svn recebe a seguinte mensagem de erro ao atualizar:

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)

No servidor Apache, apenas uma mensagem aparece e está em other_vhosts_access.log:

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

Aqui está a configuração do diretório virtual do subversion:

<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>

Alguém pode me indicar a direção certa para resolver esse problema? Obrigado.

    
por Chris C. 07.01.2014 / 01:31

2 respostas

5

Ao atualizar o Apache de 2.2 para 2.4, os links de arquivos em sites habilitados devem terminar com .conf, onde no passado eles não precisavam de uma extensão de arquivo específica.

Se o nome do arquivo de configuração do site em sites-available não tiver uma extensão .conf, convém renomeá-lo e, em seguida, executar: a2ensite filename para adicioná-lo aos sites habilitados.

Exemplo, se o seu arquivo de configuração do site for chamado MySite:

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

Portanto, o problema acima foi devido à configuração do meu site não ter sido atendida quando o serviço Apache2 foi iniciado.

    
por 07.01.2014 / 17:54
3

Suspeito strongmente que o Apache esteja respondendo por HTTP na porta 443 em vez de HTTPS. Conecte-se à porta 443 com o TELNET e faça um GET / e suspeito que você receberá uma resposta. Se você fizer isso, isso indica que o Apache está escutando HTTP simples.

Não estou familiarizado com os dispositivos de configuração do Debian, por isso, tenho dificuldade em dizer onde começar a procurar. Se você achar que está obtendo HTTP não criptografado na porta 443, é provável que o servidor não esteja carregando mod_ssl por algum motivo.

    
por 07.01.2014 / 01:39