В этой заметке я предлагаю познакомиться с модулем apache, который называется mod_dav. Он реализует протокол WebDAV (Web-based Distributed Authoring and Versioning). Протокол высокого уровня, работающий поверх протокола HTTP для доступа к объектам и коллекциям. Для защиты передаваемых данных может использовать шифрование данных — SSL.
Проще говоря, это означает, что протокол WebDAV выполняет следующие функции
-
выполнение разнообразных операций над файлами (создание, удаление, блокировки, поддержка версий)
-
работа с любым типом объектов (не только файлы)
-
поддержка метаданных (свойств) объектов
На практике эти полезные функции применяются для выполнения таких задач как
-
создание сетевой файловой системы
-
распределенная разработка программного обеспечения
-
совместная работа с веб-документами
Вот проекты, использующие протокол WebDAV:
Apache. Реализует поддержку WebDAV модулем mod_dav.
Adobe GoLive. Протокол используется для совместной работы с веб-документами.
Subversion. Использует WebDAV для совместной работы при разработке программного обеспечения.
Далее предлагаю инструкцию по установке и настройке web-сервера apache c модулем mod_dav для Ubuntu 11.04.
Устанавливаем apache2
apt-get install apache2 libapache2-mod-encoding
Создаем SSL сертификат и SSL ключ во временной папке /tmp/ssl_conf
mkdir /tmp/ssl_conf
cd /tmp/ssl_conf
Следующая команда сгенерирует файл ключа. Будут задаваться вопросы по поводу вашего СА. В процессе заполнения полей, в поле “Common Name (eg, YOUR name)” пишем доменное имя нашего сервера (в нашем случае — host.example.com).
Длина паролей не мение 4-х символов.
openssl req -config /etc/ssl/openssl.cnf -new -out server.csr
Создаем сертификат и ключ
openssl rsa -in privkey.pem -out server.key
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
openssl x509 -in server.crt -out server.der.crt -outform DER
Копируем файлы в папку apache
cp server.crt /etc/apache2/
cp server.key /etc/apache2/
Создаем папку WebDav
mkdir -p /var/www/webdav
chown www-data /var/www/webdav
Создаем пользователя для подключения к серверу
htpasswd -c /etc/apache2/apachepwd user
chown root:www-data /etc/apache2/apachepwd
chmod 640 /etc/apache2/apachepwd
Загружаем необходимые модули apache
a2enmod dav_fs
a2enmod dav
a2enmod ssl
Редактируем афйл apache2.conf
nano /etc/apache2/apache2.conf
в конце файла редактируем секцию виртуальных хостов
# Include the virtual host configurations:
#Include sites-enabled/
Include vhost.conf
Создаем конфигурационный файл для виртуального хоста
nano /etc/apache2/vhost.conf
В него пишем следующее
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/webdav
<Directory /var/www/webdav>
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/webdav
CustomLog /var/log/apache2/ssl_access.log combined
SSLCertificateFile /etc/apache2/server.crt
SSLCertificateKeyFile /etc/apache2/server.key
<IfModule mod_ssl.c>
SSLEngine on
SetEnvIf User-Agent «.*MSIE.*» nokeepalive ssl-unclean-shutdown
</IfModule>
<Directory />
Options FollowSymLinks
Options Indexes FollowSymLinks MultiViews
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory /var/www/webdav>
Dav On
AuthType Basic
AuthName «Hello, world!»
AuthUserFile /etc/apache2/apachepwd
Require valid-user
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
</Limit>
Options Indexes FollowSymLinks MultiViews
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory «/usr/lib/cgi-bin»>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ «/usr/share/doc/»
<Directory «/usr/share/doc/»>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Для автоматического перенаправления всех запросов на https создаем файл .htaccess
nano /var/www/webdav/.htaccess
Options All +Indexes
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
<Files .htaccess>
order allow,deny
deny from all
</Files>
Перезапускаем apache
/etc/init.d/apache2 reload
Далее мы увидим как можно подключиться к созданному ресурсу из ОС Windows XP
Заходим «Пуск» -> «Сетевое окружение»
Делаем двойной щелчек на «Новое место в сетевом окружении», появится мастер добавления. На первом шаге жмем «Далее», на втором шаге выделяем сетевое размещение и тоже жмем «Далее». На следующем шаге вводим адрес нашего сервера (например — https://192.168.0.1) и нажимаем «Далее». При возникновении предупреждения системы безопасности, принимаем сертификат. При запросе имени пользователя и пароля вводим эти данные (в примере login — user, pass — 1234). При запросе имени для сетевого размещения вводим имя (например webdavsvr). Жмем «Далее» и «Готово». Теперь мы можем пользоваться ресурсом как обычной расшаренной папкой.