Instalación de servidor de repositorio Subversion con soporte SSL y autenticación por LDAP en Debian GNU/Linux

Después de haber realizado la guía de instalación y configuración de un servidor OpenLDAP en Debian GNU/Linux, me dispuse a integrar muchos otros servicios el cual se pudieran autentificar mediante el LDAP.

Así que me di a la tarea de configurar Subversion con Apache2 para que puedan autentificarse mediante LDAP, esta guía la desarrolle en Debian pero fácilmente puede ser adaptada para Ubuntu u otras distribuciones derivadas de Debian.

Instalando la paquetería necesaria

Para empezar se deben descargarse los paquetes necesarios para tener Apache2 y sus respectivos módulos para que se pueda trabajar con Subversion.

# apt-get install subversion apache2 libapache2-svn subversion-tools

Luego debemos crear el repositorio

# mkdir /var/svn/proyecto
# svnadmin create /var/svn/proyecto

Es necesario cambiar el propietario y permisos de escritura para el servidor Apache2

# chown www-data.www-data -R /var/svn/proyecto/
# chmod 777 -R /var/svn/proyecto/

Habilitando los módulos para Apache2

Se deben habilitar los módulos de Subversion, DAV y autenticación por medio de LDAP para Apache2.

#a2enmod dav
#a2enmod dav_svn
# a2enmod authnz_ldap

Debemos forzar la carga de módulos a Apache2

# /etc/init.d/apache2 force-reload
# /etc/init.d/apache2 restart

Generando un certificado auto firmado

Ahora es necesario dar soporte SSL, pero también es necesario descargarnos una herramienta para generar un certificado auto firmado de forma muy sencilla.

# apt-get install ssl-cert


Creamos el directorio donde estará alojado nuestro certificado auto firmado.

# mkdir /etc/apache2/ssl

Con el paquete ssl-cert viene la herramienta make-ssl-cert para crearnos el certificado auto firmado.

# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Configurando un Virtual Host para tener soporte SSL

Copiamos un virtual host hacia la carpeta de sitios disponibles

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

Editamos el virtual host

# nano /etc/apache2/sites-enabled/ssl

Y al principio del archivo debemos realizar los cambios que presento a continuación

NameVirtualHost *:443

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem

Ahora habilitamos el virtual host con soporte para ssl

# a2enmod ssl

Y reiniciamos Apache2, para que reconozca nuestros cambios

# /etc/init.d/apache2 force-reload

Si queremos probar que todo esta bien debemos ingresar a la dirección https://ip-hostname y nos dará una advertencia diciendo que estamos accediendo a un sitio que usa un certificado auto firmado, entonces debemos agregar la excepción para ingresar al sitio.

Configurando Apache2 para Subversion

Antes que nada debemos crear, un archivo con política de grupos, para asignar a cada usuario su respectivo repositorio de proyecto.

# nano /etc/apache2/acceso.authz

[groups]
# Se agregan los usuarios creados en el servidor LDAP
grupo-ldap = daniel.herrera, carlos.ramirez

[proyecto:/]
@grupo-ldap=rw

Ahora se procede a crear el virtual host del proyecto en Apache editando el siguiente archivo.

# nano /etc/apache2/mods-enabled/dav_svn.conf

Se agrega la siguiente entrada adaptada a nuestro ejemplo de repositorio.


<Location /svn/proyecto>
DAV svn
SVNPath /var/svn/proyecto
AuthType Basic
AuthName "Repositorio de prueba de Proyecto"
AuthzSVNAccessFile /etc/apache2/acceso.authz
Require valid-user
SSLRequireSSL
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPBindDN "cn=admin,dc=dominio,dc=com"
AuthLDAPBindPassword contraseña-servidor-ldap
AuthLDAPURL "ldap://ip-hostname/ou=users,dc=dominio,dc=com?cn"
</Location>


Terminado esto solo basta con reiniciar Apache

# /etc/init.d/apache2 restart

Accedemos a https://ip-hostname/svn/proyecto Nos pedirá un usuario y contraseña validos definidos en el archivo de políticas de grupo, y así se podrá tener acceso al proyecto.

Comentarios (2)

2 Response to "Instalación de servidor de repositorio Subversion con soporte SSL y autenticación por LDAP en Debian GNU/Linux"

  1. Anónimo Says:
    martes, marzo 13, 2012

    Hola, gracias por el material, muy bueno. He realizado todo lo que indica, pero tengo problemas al acceder. Utilizando el navegador no deja de pedirme usuario y contraseña y en el /var/log/apache2/error.log me registra el siguiente error [error] [cliente xx.xx.xx.xx] user svn: authentication failure for "/svn" Password Mismatch.

    Alguna sugerencia??
    Gracias

  2. Daniel Alberto says:
    sábado, marzo 17, 2012

    Te recomiendo que revises cuando generas el usuario y la contraseña. Saludos