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.
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
sábado, marzo 17, 2012
Te recomiendo que revises cuando generas el usuario y la contraseña. Saludos