Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 70
Текст из файла (страница 70)
Подключение почтового Web-интерфейса# Файл httpd.conf<Directory /home/httpd/mail>order d e n y , a l l o wdeny from allallow from localhost293Сервер Apacheallow from 192.168allow from 123.123.123.123Options ExecCGI</Directory># Файл vhosts.conf<VirtualHost 123.123 .123.123>ServerAdmin webmaster@den.dhsilabs.comDocumentRoot /home/httpd/mailServerPath /mailServerName wwwmail.dhsilabs.comErrorLog logs/error_logTransferLog logs/access_logErrorDocument 403 http://www.dhsilabs.com/messages/error403.html</VirtualHost># Error 403 — доступ извне, то есть почтовый интерфейс будетдоступен только# из локальной сети12.5. SSL и Apache12.5.1.
Установка SSLSSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности в Интернет. Этотметод поддерживает несколько способов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на уровне сервера. SSL работает натранспортном уровне и поэтому обеспечивает надежное шифрование всехтипов данных. Более подробно о реализации SSL можно прочитать на сайтекомпании Netscape — http://home.netscape.com/info/security-doc.htmlПротокол S-HTTP является еще одним «безопасным» Интернет-протоколом.
Он был разработан для предоставления конфиденциальности данных,передаваемых через соединение. Конфиденциальность нужна, например, припередаче номеров кредитных карточек и прочей важной информации.Модуль mod_ssl реализует в сервере Apache слой SSL, который осуществляет шифрование всего потока данных между клиентом и сервером. Для всехостальных частей Web-сервера модуль mod_ssl является прозрачным. Дляработы в этом режиме требуется браузер, поддерживающий механизм SSL(этому условию удовлетворяют все современные распространенные браузеры).Что касается установки, то вам необходимо установить пакет OpenSSL(http://www.openssl.org), хотя возможно у вас в системе уже установлен этотпакет.
Для проверки этого введите openssl, и если вы увидите в ответ приглашение OpenSSL>, значит — OpenSSL уже установлен. В противном случаедля установки OpenSSL выполните следующие шаги (перед этим выполнитекоманду su для того, чтобы приобрести привилегии суперпользователя):1. Распакуйте последнюю версию OpenSSL командой:tar zxvf o p e n s s l - x .
у . z . t a r . g z ( x . y . z — номер версии).294Сервер Apache2. Перейдите в каталог openssl-x.y.z и выполните команду:./config.3. Если все нормально (нет ошибок), введите команду:makeПримечание.При возникновении ошибок, скорее всего вам придется установитьнедостающие пакеты.4. Затем нужно ввести команды make install и Idconfig. Перед выполнениемкоманды Idconfig убедитесь, что в файле / e t c / I d , so. conf прописан путь кбиблиотекам OpenSSL (по умолчанию это /usr/local/ssl/lib).12.5.2. Подключение SSL к ApacheТеперь осталось подключить mod_ssl к Apache.
При этом следует учитывать, что вам нужна версия mod_ssl, которая совместима с вашей версиейApache. Иначе модуль mod_ssl будет некорректно работать или вообщеоткажется что-либо делать. Последние цифры в названии модуля указываютна совместимость с определенной версией Apache. Например, для Apache1.3.14 нужен файл mod_ssl-2.7.1-1.3.14.tar.gz. Здесь 2.7.1 — версия mod_ssl.Распакуйте модуль командой:tar zxvf m o d _ s s l - x . у .
z - 2 . О . О . t a r . g zи выполните команду:./configure —with-apache=../apache_l .3.14 —with-ssl=../openssi-0.9.5В данном примере я использую OpenSSL O.9.5. Теперь перейдите вкаталог с Apache, откомпилируйте его и установите сертификат:cd ../apache-1.3.14makemake certificatemake installТаким образом вы установите Apache в каталог, указанный в опции —prefix (по умолчанию /usr/local/apache). Теперь попробуйте запуститьApache. Это можно сделать с помощью команды:usr/local/apache/bin/apachectl startsslПараметр startssl необходим для включения SSL. Сервер Apache ужефункционирует, однако обратиться по протоколу https вы еще не можете.Для этого вам нужно сконфигурировать виртуальные хосты, которые будутиспользовать протокол https.
Но для начала необходимо настроить Apacheдля прослушивания порта 443. С этой целью откройте любым редакторомфайл /etc/httpd/conf/httpd.conf и добавьте в него следующие строки:Listen 443NameVirtualHost x . x . x . x : 4 4 3Примечание.Порт 443 — это стандартный порт для протокола HTTPS. Именно по этому портуApache будет прослушивать виртуальные хосты.295Сервер ApacheТеперь непосредственно приступите к созданию виртуального сервера,работающего по протоколу https, для чего продолжите редактирование файла / e t c / h t t p d / c o n f / h t t p d . c o n f .
Пример того, что необходимо при этомввести, приведен в листинге 12.12:Листинг 12.12. Виртуальный https-cepeep<VirtualHost x.x.x.x:443># Эти строки нужны для поддержки SSLSSLEngine onSSLLogLevel warnSSLOptions +StdEnvVarsSSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crtSSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.keySSLLog /usr/local/apache/logs/ssl_engine_log#ServerName w w w . d h s i l a b s . c o mServerAdmin webrnaster@den . dhsilabs . comDocumentRoot / v a r / h t t p d / w w w / h t m l .ErrorLog / v a r / h t t p s / w w w / l o g s / e r r o r .
l o g</VirtualHost>После таких строк вы можете конфигурировать свой виртуальный хосткак обычно. Теперь нужно перезапустить сервер httpd. При запуске Apacheпотребует ввести пароль. Если вы не хотите вводить его при каждомзапуске системы — перейдите в каталог, где находится файл s s l . key ивыполните следующие команды:ср s e r v e r .
k e y s e r v e r . k e y . o r gopenssl rsa -in s e r v e r . k e y . o r g -out s e r v e r . k e ychmod 400 server.keyПочти все готово! Теперь сервер не должен запрашивать пароль и будетработать в нормальном режиме. При обращении https://host.domain браузерзапросит вас на предмет использования сертификата.Чтобы Apache по умолчанию стартовал с поддержкой SSL, исправьте вфайле bin/apachectl условие start на startold, a startssl на просто start.Затем, находясь в каталоге .usr/local/bin, установте ссылку openssl:In -s / u s r / l o c a l / s s l / b i n / o p e n s s l openssl12.5.3.
Генерирование сертификатовСертификат гарантирует безопасное подключение к Web-серверам и (или)удостоверяет личность владельца. Идентификация обеспечивается путем применения личного ключа, известного только пользователю данной системы.Когда пользователь посещает защищенный узел для передачи секретнойинформации (например, номеров кредитных карточек) по протоколу https,узел автоматически пошлет ему сертификат.Итак, давайте приступим к генерированию сертификатов. Для этогосначала выполните команду:openssl genrsa -des3 -out s e r v e r .
k e y 1024296Сервер ApacheОна создаст файл server, key. После этого вы должны подать запрос вслужбу верификации:openssl req -new -key s e r v e r . k e y -out s e r v e r . c s rЗдесь вам придется ответить на вопросы. Если вы ошибетесь — ничегострашного, все можно будет повторить заново. В том случае, если запроссгенерирован правильно, вы должны получить такую надпись:Y o u now have to send this C e r t i f i c a t e Signing Request (CSR)to a C e r t i f y i n g A u t h o r i t y ( C A ) for signingОтвечая на вопросы, будьте очень внимательны — ваши ответы увидит весь мир.По всем правилам, вы сейчас должны подписать сертификат у доверенноголица, но за неимением желания платить за это деньги, подпишите сами себя:openssl genrsa -des3 -out c a .
k e y 1024openssl req -new -x509 -days 365 -key c a . k e y -out c a . c r tВ данном случае у вас получится «самоподписанный» сертификат. Есливы хотите получить полноценный сертификат, то вам придется заплатить заподпись деньги. Для этого добро пожаловать на сайт www.thawte.com. ВРоссии представителем этого сайта является solutions.rbc.ru. КомпанияThawTe занимается генерированием полноценных сертификатов.
Получитьсертификат от ThawTe можно, естественно, за деньги. На сайте жеsolutions.rbc.ru просто перепродают услуги компании ThawTe.Возвращаясь к генерированию сертификата, скопируйте s i g n . s h изпакета mod_ssl в каталог с ключами и подпишите себя:./sign.sh server.csrЕсли на экране появится надпись:Now you have two f i l e s : s e r v e r . k e y and s e r v e r . c r t .These now can be used as f o l l o w i n gто это означает, что все собрано правильно. Затем скопируйте новые файлыserver.key и server.crt на место старых.
Выполните команду make вкаталоге с .crt-файлом.В заключении вы получите полностью работающий Apache, защищенный SSL. Для сбора полной информации о работе SSL введите:openssl s_client -connect l o c a l h o s t : 4 4 3 -state -debug72.6.
Пример файла httpd.confВ этом разделе приведен пример стандартной конфигурации сервераApache (см. листинг 12.13). К каждому блоку листинга сопутствуют комментарии на русском языке, которые помогут вам разобраться с различнымиопциями сервера.297Сервер ApacheЛистинг 12.13. Пример файла httpd.conf#### httpd.conf — файл конфигурации сервера HTTP Apachett Установите имя сервераServerName www.dhsilabs.comResourceConfig /dev/nullAccessConfig /dev/null##########Поддержка динамических разделяемых объектов(Dynamic Shared Object — DSO)Для более подробной информации о DSO прочтите файл README.DSO,входящий в дистрибутив Apache.Модуль расширяет возможности сервера Apache,добавляет в его состав новые функции.Подключить модуль можно так:LoadModule foo_module libexec/mod_foo.soВы можете найти документацию по модулями в файле"/var/www/manual/mod"tLoadModule mmap_static_module modules/mod_mmap_static.soLoadModule env_modulemodules/mod_env.so### The first module activates buffered logs.# Первый модуль обеспечивает протоколирование.# Он запишет информацию в протокол, когда буфер объемом 4К# переполнится.