Листинг 16.11. Идентификация по IP-адресу
<VirtualHost 192.168.1.2>
ServerName www.dhsilabs.com
ServerAdmin [email protected]
DocumentRoot /var/httpd/www/html
ErrorLog /var/https/www/logs/error.log
</VirtualHost>
<VirtualHost lib.dhsilabs.com>
ServerName lib.dhsilabs.com
ServerAdmin [email protected]
DocumentRoot /var/httpd/lib/html
ErrorLog /var/https/lib/logs/error.log
</VirtualHost>
При конфигурировании виртуальных серверов можно использовать опцию ExecCGI, которая разрешает выполнение CGI-сценариев на виртуальном сервере. Листинги 16.12 и 16.13 демонстрируют настройку почтового веб-интерфейса.
Листинг 16.12. Файл httpd.conf
<Directory /home/httpd/mail>
order deny,allow
deny from all
allow from localhost
allow from 192.168
allow from 123.123.123.123
Options ExecCGI
</Directory>
Листинг 16.13. Файл vhosts.conf
<VirtualHost 123.123.123.123>
ServerAdmin [email protected]
DocumentRoot /home/httpd/mail
ServerPath /mail
ServerName wwwmail.dhsilabs.com
ErrorLog logs/error_log
TransferLog logs/access_log
# Error 403 - ошибка доступа извне, то есть почтовый
# интерфейс будет доступен только из локальной сети
ErrorDocument 403 http://www.dhsilabs.com/messages/error403.html
</VirtualHost>
16.10. SSL и Apache
16.10.1. Установка SSL
SSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности передачи данных. Этот метод поддерживает несколько методов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на уровне сервера, SSL работает на транспортном уровне и поэтому обеспечивает надежное шифрование всех типов данных. Более подробно о реализации SSL можно прочитать на сайте компании Netscape — http://home.netscape.com/info/security-doc.html.
Протокол S-HTTP является еще одним «безопасным» интернет-протоколом. Он был разработан для предоставления конфиденциальности данных, передаваемых через соединение. Конфиденциальность нужна, например, при передаче номеров кредитных карточек и прочей важной информации.
Модуль mod_ssl реализует в сервере Apache слой SSL, который осуществляет шифрование всего потока данных между клиентом и сервером. Для всех остальных частей веб-сервера модуль mod_ssl является прозрачным. Для работы в этом режиме требуется браузер, поддерживающий механизм SSL (этому условию удовлетворяют все распространенные сегодня браузеры).
Что касается установки, то вам необходим пакет OpenSSL (http://www.openssl.org), хотя, возможно, у вас в системе уже установлен этот пакет (в современных дистрибутивах он устанавливается по умолчанию). Если вы будете собирать OpenSSL из исходных текстов, то последовательность ваших действий такая:
# tar zxvf openssl-x.y.z.tar.gz # x.y.z - номер версии
# cd openssl-x.y.z
# ./config.
# make
# make install
# ldconfig
Перед выполнением команды ldconfig убедитесь, что в файле /etc/ld.so.conf прописан путь к библиотекам OpenSSL (по умолчанию это /usr/local/ssl/lib).
16.10.2. Подключение SSL к Apache
Версия mod_ssl, которую вам нужно установить, должна быть совместима с вашей версией Apache, иначе модуль mod_ssl будет некорректно работать или вообще откажется что- либо делать. Последние цифры в названии модуля указывают на совместимость с определенной версией Apache. Например, для Apache 1.3.14 нужен файл mod_ssl-2.7.1- 1.3.14.tar.gz.
Для сборки mod_ssl из исходных текстов выполните команду:
#./configure --with-apache=../apache_1.3.14 --with-ssl=../openssl-0.9.5
В данном примере я использую OpenSSL 0.9.5. Теперь перейдите в каталог с Apache, откомпилируйте его и установите сертификат:
# cd ../apache-1.3.14
# make
# make certificate
# make install
Таким образом вы установите Apache в каталог, указанный в опции --prefix (по умолчанию /usr/local/apache).
Теперь попробуйте запустить Apache. Это можно сделать с помощью команды:
# usr/local/apache/bin/apachectl startssl
Параметр startssl необходим для включения SSL. Сервер Apache уже
