Configuración de WebDAV en Apache

 
 

Índice General

  1. Introducción
  2. Instalación de Apache
  3. Configuración de la parte segura (Apache + OpenSSL)
    1. Habilitar SSL en nuestro servidor Apache
    2. Crear certificado para nuestro servidor
  4. Configuración de WebDAV
  5. Configuración de clientes WebDAV

 

  1. Introducción (Volver al índice General)
    WebDAV es el acrónimo de Web-based Distributed Authoring and Versioning que viene a significar: Creación y control de versiones distribuidos en web. La información existente en la web es básicamente de lectura debido a que el protocolo HTTP no permite modificar una página o crear una nueva. Por medio del protocolo WebDAV construido sobre HTTP, al cual complementa, podremos crear, modificar, mover y eliminar archivos en un servidor remoto.

    Es muy útil para editar documentos que sirve un servidor web, pero también puede aplicarse a sistemas de almacenamiento basados en web (Almacenamiento en nube).

    La mayoría de sistemas operativos modernos proporcionan soporte para WebDAV haciendo que los archivos de un servidor WebDAV aparezcan como si estuviesen almacenados en un directorio local.

    En este artículo implementaremos WebDAV en un servidor Debian con Apache2, con cifrado SSL para establecer una conexión segura y cifrada y autenticación Digest para acceder a los recursos WebDAV. Además veremos como configurar algunos clientes WebDAV para acceder a recursos compartidos con WebDAV.

    Las pruebas realizadas se hicieron sobre una distribución Debian 7 (Wheezy), Apache 2.2.22-13+deb7u6 y OpenSSL 1.0.1e-2+deb7u20

  2.  

  3. Instalación de Apache (Volver al índice General)
    La instalación del Servidor Web Apache queda fuera de este artículo, no obstante, os dejo aquí un enlace sobre Prácticas HTTP en el que se muestra como realizar una instalación básica de Apache. O bien, leer alguno de estos dos artículos dedicados a la instalación de LAMP, que conlleva la instalación de Apache, MySQL/MariaDB y PHP, Perl o Phyton en Linux:

  4.  

  5. Configuración de la parte segura (Apache + OpenSSL) (Volver al índice General)
    Durante la instalación de Apache2 se crea una configuración por defecto para acceso seguro (HTTPS). Esta configuración por defecto se almacena en el archivo /etc/apache2/sites-available/default-ssl.conf.

    1. Habilitar SSL en nuestro servidor Apache (Volver al índice General)
      Habilitar SSL/TLS en el servidor web permite establecer conexiones seguras, encriptadas entre el servidor y el cliente. De este modo, es posible, entre otras cosas, hacer uso de contraseñas con la ventaja de que éstas no viajarán en texto plano, irán encriptadas y serán más difíciles de conocer en caso de ser interceptadas por terceros malintencionados.

      Para habilitar SSL/TLS, en primer lugar habilitaremos el módulo SSL/TLS ejecutando el siguiente comando:

      $ sudo a2enmod ssl

      También tendremos que habilitar el sitio seguro, que en la mayoría de las distribuciones, es el archivo default-ssl.conf, o alguno de nombre parecido, ejecutando el siguiente comando:

      $ sudo a2ensite default-ssl.conf

      La configuración por defecto relativa al motor SSL/TLS de nuestro archivo /etc/apache2/sites-available/default-ssl.conf será algo parecido a esto:

      ...
             #   SSL Engine Switch:
             #   Enable/Disable SSL for this virtual host.
                 SSLEngine on
             #   A self-signed (snakeoil) certificate can be created by installing
             #   the ssl-cert package. See
             #   /usr/share/doc/apache2/README.Debian.gz for more info.
             #   If both key and certificate are stored in the same file, only the
             #   SSLCertificateFile directive is needed.
                 SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                 SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
      ...

      Para finalizar y para que surtan efecto los cambios realizados, reiniciamos el servidor Apache.

      $ sudo service apache2 restart

      Si utilizamos un sistema operativo que utiliza systemd, reiniciaremos Apache con el siguiente comando:

      $ sudo systemctl restart apache2
    2. Crear certificado para nuestro servidor (Volver al índice General)
      Una vez configurado el sitio seguro de nuestro servidor web, podemos crear nuestro propio certificado autofirmado.

      En la configuración por defecto del archivo /etc/apache2/sites-available/default-ssl.conf podemos observar que Apache hace uso de certificado autofirmado que se crea, por defecto, durante la instalación.

      ...
                 SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                 SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
      ...

      Nosotros podemos crear nuestro propio certificado autofirmado para que haga referencia a nuestro sitio. En un artículo publicado anteriormente en </ZeppelinuX>, explicamos como Crear certificado autofirmado para Apache. Para verlo, pincha aquí.

  6.  

  7. Configuración de WebDAV (Volver al índice General)
    Ahora estamos preparados para configurar recursos WebDAV haciendo uso de una conexión segura encriptada.

    En primer lugar cargaremos los módulos necesarios para activar WebDAV en Apache. Para ello, ejecutaremos los siguientes comandos:

    $ sudo a2enmod dav

    y

    $ sudo a2enmod dav_fs

    Creamos el recurso WebDAV que en este ejemplo estará ubicado en /var/www/midominio/webdav.

    $ sudo mkdir /var/www/midominio/webdav

    Para poder escribir en el recurso webdav, el usuario (www-data) o grupo (www-data) que ejecuta el servidor Apache deberá tener permisos de escritura en toda la ruta. No es necesario que tengan permisos de escritura en todo el sitio.

    Si tienes una configuración personalizada en lo relativo a permisos, propietarios y grupos, tendremos que hacer, que al menos el usuario (www-data) o el grupo (www-data) tengan permisos de escritura en el recurso webdav. En mi caso, para no modificar mi configuración personalizada del sitio no utilicé la recursividad (-R), lo que hice fue lo siguiente:

    $ sudo chgrp www-data /var/www
    $ sudo chgrp www-data /var/www/midominio
    $ sudo chgrp www-data /var/www/midominio/webdav
    $ sudo chmod g+rwx /var/www
    $ sudo chmod g+rwx /var/www/midominio
    $ sudo chmod g+rwx /var/www/midominio/webdav

    Con todos estos comandos, lo que se consigue es que el grupo www-data tenga permisos de escritura en la ruta completa /var/www/midominio/webdav.

    El siguiente paso, será configurar el sitio seguro modificando el archivo /etc/apache2/sites-available/default-ssl.conf y crear el recurso WebDAV. Para ello añadiremos las siguientes líneas en dicho archivo:

    ...
    DavLockDB /var/www/DavLock
    <VirtualHost *:443>
    ...
    	Alias /webdav /var/www/zeppelinux/webdav
    	<Location /webdav>
    		DAV On
    		AuthType Digest
    		AuthName "Restringido"
    		AuthDigestProvider file
    		AuthUserFile  /etc/apache2/passwords.digest
    		Require valid-user
    		<LimitExcept GET PUT HEAD OPTIONS POST>
    			Require valid-user
    		</LimitExcept>
    	</Location>
    ...

    La directiva DavLockDB /var/www/DavLock especifica la base de datos de bloqueos (Lock Database). Esta debe añadirse antes de <VirtualHost *:443>. Indica la ruta al fichero DavLock. El fichero DavLock no necesita ser creado y el directorio /var/www/ deberá tener permisos de escritura para, el grupo www-data o para el usuario www-data o para ambos. Para cambiar los permisos ejecutaremos los siguientes comandos:

    $ sudo chgrp www-data /var/www

    y

    $ sudo chmod g+rwx /var/www

    Para autenticarnos al acceder al recurso WebDAV, utilizaremos el método de autenticación Digest. En un artículo publicado anteriormente en </ZeppelinuX>, se muestra como configurar la autenticación Digest. Para acceder a dicho artículo pincha aquí.

    Una vez finalizada la configuración de WebDAV, para que surtan efecto los cambios realizados, reiniciamos Apache.

    $ sudo service apache2 restart

    Si utilizamos un sistema operativo que utiliza systemd, reiniciaremos Apache con el siguiente comando:

    $ sudo systemctl restart apache2
  8.  

  9. Configuración de clientes WebDAV (Volver al índice General)
    Ahora sólo nos queda probar el acceso a nuestro recurso WebDAV. Pincha aquí para acceder a un artículo dedicado enteramente a la Configuración de Clientes WebDAV

 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
 
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.