Рейтинговые книги
Читем онлайн Linux: Полное руководство - Денис Колисниченко

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 95 96 97 98 99 100 101 102 103 ... 158

Листинг 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 уже функционирует, однако обратиться по протоколу HTTPS вы еще не можете. Для этого вам нужно сконфигурировать виртуальные узлы, которые будут использовать протокол HTTPS. Но для начала необходимо настроить Apache для прослушивания порта 443 (это стандартный порт для протокола HTTPS). Добавьте в файл /etc/httpd/conf/httpd.conf следующие строки:

Listen 443

NameVirtualHost x.х.x.х:443

Теперь непосредственно приступите к созданию виртуального сервера, работающего по протоколу HTTPS, для чего продолжите редактирование файла /etc/httpd/conf/httpd.conf. Пример того, что необходимо при этом ввести, приведен в листинге 16.14. После этих обязательных директив вы можете конфигурировать свой виртуальный узел как обычно.

Листинг 16.14. Виртуальный HTTPS-сервер

<VirtualHost x.х.x.х:443>

 # Эти строки нужны для поддержки SSL

 SSLEngine on

 SSLLogLevel warn

 SSLOptions +StdEnvVars

 SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt

 SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key

 SSLLog /usr/local/apache/logs/ssl_engine.log

 # --------------------------------------

 ServerName www.dhsilabs.com

 ServerAdmin [email protected]

 DocumentRoot /var/httpd/www/html

 ErrorLog /var/https/www/logs/error.log

</VirtualHost>

Теперь нужно перезапустить сервер httpd. При запуске Apache потребует ввести пароль. Если вы не хотите вводить его при каждом запуске системы, то перейдите в каталог, где находится файл ssl.key, и выполните следующие команды:

# cp server.key server.key.org

# openssl rsa -in server.key.org -out server.key

# chmod 400 server.key

Почти все готово! Теперь сервер не должен запрашивать пароль и будет работать в нормальном режиме.

Чтобы Apache по умолчанию стартовал с поддержкой SSL, исправьте в файле apachectl (он устанавливается в каталог /bin, /sbin или /usr/sbin, см. rpm -ql <пакет_Apache>) условие start на startold, a startssl на просто start. Затем, находясь в каталоге /usr/local/bin, установите ссылку openssl:

# ln -s /usr/local/ssl/bin/openssl openssl

16.10.3. Генерирование сертификатов

Сертификат гарантирует безопасное подключение к веб-серверам и/или удостоверяет личность владельца. Идентификация обеспечивается путем применения личного ключа, известного только пользователю данной системы. Когда пользователь посещает защищенный узел для передачи секретной информации (например, номеров кредитных карточек) по протоколу HTTPS, узел автоматически посылает ему сертификат.

Итак, давайте приступим к генерированию сертификатов. Для этого сначала выполните команду:

# openssl genrsa -des3 -out server.key 1024

Она создаст файл server.key. После этого вы должны подать запрос в службу верификации:

# openssl req -new -key server.key -out server.csr

Здесь вам придется ответить на вопросы. Если вы ошибетесь — ничего страшного, все можно будет повторить заново. В том случае, если запрос сгенерирован правильно, вы должны получить такую надпись:

You now have to send this Certificate Signing Request (CSR)

to a Certifying Authority (CA) for signing

Отвечая на вопросы, будьте очень внимательны — ваши ответы увидит весь мир.

По всем правилам вы сейчас должны подписать сертификат у сертифицирующей организации. Это услуга платная, и оказывает ее компания ThawTe (www.thawte.com), которую в России представляет www.solutions.rbc.ru. Бесплатно вы можете получить только «самоподписанный» сертификат. Скопируйте sign.sh из пакета mod_ssl в каталог с ключами и подпишите себя сами:

# openssl req -new -x509 -days 365 -key server.key -out server.csr

# ./sign.sh server.csr

Если на экране появится надпись

Now you have two files: server.key and server.crt.

These now can be used as following

то это означает, что все собрано правильно. Затем скопируйте новые файлы server.key и server.crt на место старых. Выполните команду make в каталоге с .crt-файлом.

В итоге вы получите полностью работающий Apache, защищенный SSL. Для сбора полной информации о работе SSL введите:

# openssl s_client -connect localhost:443 -state -debug

16.11. Пример файла httpd.conf

В этом параграфе приведен пример стандартной конфигурации сервера Apache. Каждому блоку листинга 16.15 сопутствуют комментарии, которые помогут вам разобраться с различными настройками сервера.

Листинг 16.15. Пример файла httpd.conf

##

## httpd.conf -- файл конфигурации сервера HTTP Apache

##

# ----------------------------------------------------

# Установите имя сервера

1 ... 95 96 97 98 99 100 101 102 103 ... 158
На этой странице вы можете бесплатно читать книгу Linux: Полное руководство - Денис Колисниченко бесплатно.
Похожие на Linux: Полное руководство - Денис Колисниченко книги

Оставить комментарий