00-tech-book
.pdfВсе запросы которые не направлены к 192.168.146.20 будут обработаны “главным” сервером. Запросы к 192.168.146.20 с неизвестным hostname или без заголовка Host: будут обслуживаться из /www/example1/
Обслуживание одного и того же контента на разных IP-адресах
NameVirtualHost 192.168.146.10
NameVirtualHost 217.10.20.30
<VirtualHost 192.168.146.10 217.10.20.30> DocumentRoot /www/server1
ServerName server.example.com ServerAlias server </VirtualHost>
Работа на разных портах
Listen 80
Listen 8080
NameVirtualHost 192.168.146.150:80
NameVirtualHost 192.168.146.150:8080
<VirtualHost 192.168.146.150:80> ServerName www.example.com DocumentRoot /www/domain-80 </VirtualHost>
<VirtualHost 192.168.146.150:8080> ServerName www.example.com DocumentRoot /www/domain-8080 </VirtualHost>
<VirtualHost 192.168.146.150:80> ServerName www.example.org DocumentRoot /www/otherdomain-80 </VirtualHost>
<VirtualHost 192.168.146.150:8080> ServerName www.example.org DocumentRoot /www/otherdomain-8080 </VirtualHost>
Модуль 8. Apache. |
|
81 |
|
|
|
|
|
IP-based виртуальный хостинг
Указанные ниже IP-адреса в свою очередь резолвятся в example.com и example2.com
Listen 80
<VirtualHost 192.168.146.10> DocumentRoot /www/example1 ServerName www.example.com </VirtualHost>
<VirtualHost 192.168.146.20> DocumentRoot /www/example2 ServerName www.example2.com </VirtualHost>
Также могут быть смешанные вариации, которые могут одновременно использовать порты, IP-адреса
Добавляем виртуальный хост
Добавим виртуальный хост для домена company.ru. Сделаем альяс на www, ведь обычно пользователи указывают www вначале каждого сайта, так что это нужно учесть. Файлом который будет запрашиваться при обращение к корневой директории хоста будет index2.php. Поскольку вебсервер установлен с поддержкой PHP то можно попробовать обработать такую страницу. Страница будет состоять из хорошо известной функции phpinfo(); которая генерирует информацию о настройках PHP и многое другое. Страницу ошибки под номером 404 мы определим в файле .htaccess предварительно включив возможность его использования с помощью директивы AllowOverride. Log-файлы у нас будут свои. Включив Indexes для наших каталогов – мы сможем просматривать log-файлы прямо из браузера (http://www.company.ru/logs/). Но в целях безопасности не стоит это использовать на рабочем сервере, или, если используете то ограничивать доступ. Как это сделать я покажу ниже.
<Directory /var/sites/> AllowOverride All Options All
</Directory>
<VirtualHost *:80>
ServerAdmin support@company.ru
DocumentRoot /var/sites/company.ru/html
ServerName company.ru
ServerAlias www.company.ru
82 |
|
Модуль 8. Apache. |
|
|
|
DirectoryIndex index2.php
ScriptAlias /cgi-bin/ /var/sites/company.ru/html/cgi-bin/
ErrorLog /var/sites/company.ru/html/logs/error_log
CustomLog /var/sites/company.ru/html/logs/access_log common </VirtualHost>
Создаем структуру для домашнего каталога сайта
# mkdir -p /var/sites/company.ru/html/{pages,logs}
Создаем log-файлы
# touch /var/sites/company.ru/html/logs/{access_log,error_log}
Создаем файл .htaccess в каталоге /var/sites/company.ru/html/ с таким содержанием:
ErrorDocument 404 /pages/404.html
Не забудьте создать страницу 404.html с любым сообщением. Эта страница будет выводиться каждый раз, когда будет запрошена страница которой нет на сервере.
А теперь создадим файл /var/sites/company.ru/html/index2.php с таким содержанием:
<?php
phpinfo();
?>
Функция phpinfo(); позволяет сгенерировать страницу с настройками PHP и установленными модулями. Это нам позволит убедиться, что PHP функционирует правильно и узнаем какие модули PHP присутствуют в системе.
В целях безопасности CGI-скрипты принято выполнять в определенной директории. Директивой ScriptAlias мы определили каталог в котором можно выполнять CGI-скрипты (не забудьте в файле httpd.conf раскомментировать
обработчик для CGI - “AddHandler cgi-script .cgi” ). На каталог должна быть установлена опция Options +ExecCGI (или Options All).
Создадим тестовый файл /var/sites/company.ru/html/cgi-bin/test.cgi с таким содержанием:
#!/usr/bin/perl
print «Content-type: text/html\n\n»; print «Hello, World.»;
Модуль 8. Apache. |
|
83 |
|
|
|
Устанавливаем право на исполнение для этого файла
# chmod +x test.cgi
Проверяем
http://www.company.ru/cgi-bin/test.cgi
Проверяем конфигурацию виртуальных хостов Apache на наличие ошибок. Если Syntax OK то переходит к следующему шагу, если в конфигурации окажется ошибка то будет показано где именно.
# httpd -S
Проверить весь конфигурационный файл можно так:
# apachectl configtest
Когда убедимся, что все ОК можно перезагрузить веб-сервер. Apachectl – это утилита для управления веб-сервером. Можно перезагрузить веб-сервер используя классический способ (service httpd restart) а можно этот. Опция graceful – это аккуратная перезагрузка веб-сервера, она не завершает принудительно текущие соединения а дожидается их завершения.
# apachectl graceful
Базовая настройка виртуального хоста закончена. Теперь можно обратиться к веб-сайту по такому адресу. Если вы это делаете на виртуальной машине то возможно придется в файл hosts добавить записи:
192.168.146.150 company.ru 192.168.146.150 www.company.ru
В Linux это /etc/hosts, в Windows C:\WINDOWS\system32\drivers\etc\hosts
Пишем в адресной строке веб-браузера:
http://www.company.ru/
Возможные опции в директиве Options
Options задают возможности которые будут доступны в конкретной директории. По умолчанию значение Options установлено в All.
Синтаксис: Options [+|-]option [[+|-]option] ...
Доступны следующие опции:
84 |
|
Модуль 8. Apache. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
All |
Доступны все опции кроме MultiViews, эту опцию |
||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нужно указывать явно; |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
ExecCGI |
|
|
|
|
|
|
Выполнение CGI-скриптов с использованием mod_ |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
cgi разрешено; |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
FollowSymLinks |
|||||||||||||||||||||||
|
|
|
|
|
|
|
Разрешено переходить по символическим |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ссылкам; |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Includes |
Разрешены Server Side Includes (SSI); |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
IncludesNOEXEC |
SSI разрешены но команды #exec cmd и #exec cgi |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
отключены; |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
Indexes |
|
|
|
Если при запросе директории в ней не будет |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
найден файл из DirectoryIndex то mod_autoindex |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
вернет листинг этой директории с файлами и |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
каталогами; |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||
MultiViews |
|||||||||||||||||||||||
|
|
|
|
|
|
|
Разрешено Content-negotiation, когда есть |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
возможность отдавать контент в разных его |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
вариациях и клиент присылает свои пожелания; |
|
|||||||
|
|
|
|
|
|
|
|
||||||||||||||||
SymLinksIfOwnerMatch |
|||||||||||||||||||||||
|
|
|
Разрешен переход только по симлинкам владелец |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
конечного файла которых является владельцем |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
этого симлинка. |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Определение возможных директив в .htaccess
Файл .htaccess позволяет задавать дополнительные опции поведения вебсервера. Директива AllowOverride может использоваться только в секции <Directory>. Возможные значения приведены в таблице ниже.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
All |
|
|
|||||||||||||||||
|
|
|
|
Разрешено использовать все; |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
AuthConfig |
|||||||||||||||||||
|
|
Разрешено использовать директивы авторизации: |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
AuthDBMGroupFile, |
AuthDBMUserFile, |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
AuthGroupFile, AuthName, AuthType, AuthUserFile, |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
Require и т.д. |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
FileInfo |
|||||||||||||||||||
|
|
|
|
Разрешено |
использовать |
директивы |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
контролирующие |
тип документов: DefaultType, |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
ErrorDocument, |
ForceType, |
LanguagePriority, |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
SetHandler, SetInputFilter, SetOutputFilter, и |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
mod_mime Add* и Remove* directives, Header, |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
RequestHeader, |
|
SetEnvIf, |
SetEnvIfNoCase, |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
BrowserMatch, |
CookieExpires, |
CookieDomain, |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
CookieStyle, CookieTracking, CookieName), mod_ |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
rewrite directives |
RewriteEngine, RewriteOptions, |
||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
RewriteBase, RewriteCond, RewriteRule) и Action из |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
модуля mod_actions; |
|
|
Модуль 8. Apache. |
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Indexes |
|||||||||||||||||||
|
|
|
|
Позволяетиспользоватьдирективыотвечающиеза |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
индексацию директории: AddDescription, AddIcon, |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
AddIconByEncoding, AddIconByType, |
DefaultIcon, |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DirectoryIndex, |
FancyIndexing, |
HeaderName, |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
IndexIgnore, IndexOptions, ReadmeName и т.д. |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
Limit |
|
|
|
Директивы для управления доступа к хосту: Allow, |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
Deny and Order; |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
Options |
|
Позволяет использовать специфичные опции для |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
директорий; |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
None |
|
Запрещает использование .htaccess. |
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Аутентификация на сайте
Доступ в какой либо каталог можно ограничить списком учетных записей. Для создания файла учетных записей используется программа htpasswd. Когда мы создаем свой первый файл, который будет содержать список учетных записей, программа htpasswd вызывается с ключем -c который говорит о том, что нужно файл создать. При добавление учетных записей в существующий файл, этот ключ использовать не нужно.
Создаем новый файл паролей и добавляем туда пользователя user1
# htpasswd -c /var/sites/company.ru/.htpasswd user1
Как видим все пароли внутри файла шифруются.
# cat /var/sites/company.ru/.htpasswd
user1:rZ.NmkqrKJLCc
Добавим еще пару пользователей
#htpasswd /var/sites/company.ru/.htpasswd user2
#htpasswd /var/sites/company.ru/.htpasswd user3
Теперь нужно сообщить веб-серверу, что при запросе каталога logs доступ туда будет разрешен только определенному списку пользователей. Для этого в файл /var/sites/company.ru/logs/.htaccess добавим такие директивы.
AuthType Basic
AuthName «Restricted Area»
AuthBasicProvider file
AuthUserFile /var/sites/company.ru/.htpasswd
Require valid-user
86 |
|
Модуль 8. Apache. |
|
|
|
Проверяем
http://www.company.ru/logs/
В таблице перечислены использованные нами директивы.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AuthType |
|
|
|
|
|
Тип аутентификации. Basic – базовый, все передается |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
открытым текстом, Digest – все передается в |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
зашифрованном виде. Для создания digest-файлов |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
есть программа htdigest (AuthType Digest); |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
AuthName |
|
|
|
|
Реалм и текст, который будет выведен в диалоговом |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
окне ввода логина и пароля. Суть реалма - если клиент |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
уже проходил аутентификацию на сайте где реалм был |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
“Restricted Area”, то для еще одного каталога с таким же |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
реалмом будет отослан такой же пароль и диалоговое |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
окно ввода логина/пароля не будет выведено на |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
экран; |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
AuthBasicProvider |
|
Директива указывает каким способом будет проходить |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
аутентификация; |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
AuthUserFile |
|
|||||||||||||||||||||||||
|
|
|
|
Указывает расположение файла с паролями; |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
Require |
|
Условия прохождения аутентификации. |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
Require valid-user – доступ будет выдан любому |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
пользователю указанному в аккаунте, успешно |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
прошедшему аутентификацию; |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
Require user user3 – здесь доступ разрешается только |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
user3, соответственно доступ для user1 и user2 будет |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
запрещен. |
|
Еще один способ ограничения доступа - это указать с каким IP-адресов можно попадать в директорию, например вот так:
Order deny,allow
Deny from all
Allow from 192.168.146.1
Мы запрещаем доступ всем разрешив только с нашего IP-адреса (можно перечислить IP-адреса через пробел, или указывать сети, например так
192.168.146.0/24). Директива Order задает порядок проверки, То есть сначала блокируем всех а потом разрешаем избранным.
Включение SSL
SSL (Secure Sockets Layer) – криптографический протокол обеспечивающий
безопасную передачу данных. Для реализации SSL в Apache есть
Модуль 8. Apache. |
|
87 |
|
|
|
специальный модуль – mod_ssl, который предоставляет интерфейс к библиотеки OpenSSL, предоставляющею сильное шифрование с использованием протоколов SSL и TLS (Transport Layer Security). Для работы с SSL необходимо сгенерировать два файла – ключ, который хранится на сервере и сертификат, этот сертификат будет предлагаться всем желающим когда они запросят любую информацию по адресу https://ваш_сервер/ и
т.д.
Сертификаты могут быть выданы специальными службами, - CA – Certificate Authority, это будет стоит определенных денег. А можно сделать самоподписанный, тогда при запросе страниц по https клиенту будет выдаваться предупреждение, что сертификат выдан неизвестным источником. Но как показывает практика, большинство организаций именно такими и пользуются.
Устанавливаем mod_ssl
# yum -y install mod_ssl
После установки mod_ssl он будет подключен к Apache с помощью файла / etc/httpd/conf.d/ssl.conf
Все что нам нужно сделать – это добавить новую секцию VirtualHost для 443 порта, именно на этом порту обслуживаются https соединения и директиву NameVirtualHost.
NameVirtualHost *:443
<VirtualHost *:443> SSLEngine on
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
ServerAdmin support@company.ru
DocumentRoot /var/sites/company.ru/html
ServerName company.ru
ServerAlias www.company.ru
DirectoryIndex index2.php
ErrorLog /var/sites/company.ru/html/logs/error_log
CustomLog /var/sites/company.ru/html/logs/access_log common
RewriteLog /var/sites/company.ru/rewrite.log
RewriteLogLevel 1
</VirtualHost>
SSLEngineпозволяетвключитьSSLдля сайтаадирективыSSLCertificateKeyFile и SSLCertificateFile указывают на расположение ключа и файла сертификата. По умолчанию сертификат выдан на localhost.localdomain, что не очень красиво. Давайте создадим новый самоподписанный сертификат для
88 |
|
Модуль 8. Apache. |
|
|
|
company.ru Для этого понадобится библиотека OpenSSL (если не установлена
то yum -y install openssl).
Еще одна особенность SSL - для каждого сертификата нужен отдельный IPадрес. Наш сервер работает с IP 192.168.146.150 и все размещенные сайты
делят его между собой. Самый главный сайт на сервере – это конечно корпоративный сайт и именно для него мы сделаем сертификат а другие сайты также будут его использовать.
Переходим в директорию httpd
#cd /etc/httpd/conf.d/ Генерируем сертификат и ключ
#openssl req -new -x509 -nodes -out server.crt -keyout server.key
Generating a 1024 bit RSA private key
.....................++++++
..................................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:RU
State or Province Name (full name) [Berkshire]:Moscow
Locality Name (eg, city) [Newbury]:Moscow
Organization Name (eg, company) [My Company Ltd]:company.ru
Organizational Unit Name (eg, section) []:IT Dept
Common Name (eg, your name or your server’s hostname) []:company.ru Email Address []:support@company.ru
После запуска команды openssl, будет задано несколько простых вопросов, после чего сгенерируются server.crt и server.key файлы. Обращаю внимание
– Common Name должно полностью соответствовать вашему доменному имени.
В файле /etc/httpd/conf.d/ssl.conf находим директивы SSLCertificateFile и SSLCertificateKeyFile и приводим их к такому виду:
SSLCertificateFile /etc/httpd/conf.d/server.crt
SSLCertificateKeyFile /etc/httpd/conf.d/server.key
В секции виртуального хоста в httpd.conf исправляем пути к нашим новым файлам:
Модуль 8. Apache. |
|
89 |
|
|
|
<VirtualHost *:443> SSLEngine on
SSLCertificateKeyFile /etc/httpd/conf.d/server.key
SSLCertificateFile /etc/httpd/conf.d/server.crt
ServerAdmin support@company.ru
DocumentRoot /var/sites/company.ru/html
ServerName company.ru
ServerAlias www.company.ru
DirectoryIndex index2.php
ErrorLog /var/sites/company.ru/html/logs/error_log
CustomLog /var/sites/company.ru/html/logs/access_log common
RewriteLog /var/sites/company.ru/rewrite.log
RewriteLogLevel 1
</VirtualHost>
# apachectl graceful
Теперь, если у вас сохранен старый сертификат для company.ru в браузере то его нужно удалить, иначе вы будете продолжать его использовать. Для браузера Firefox удалить сертификат можно вот так:
Инструменты -> Настройки -> Дополнительно -> Просмотр сертификатов -> закладка Серверы, там мы находим сертификат для company.ru и удаляем его.
Пробуем зайти на наш сайт – https://www.company.ru/
При сохранение очередного сертификата убедитесь, что теперь он выдан на company.ru а не localhost.localdomain
server-status и server-info
Можно получить много информации о состояние вашего веб-сервера, для этого нужно в httpd.conf внести следующие записи:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 192.168.146.1 </Location>
<Location /server-info> SetHandler server-info Order deny,allow Deny from all
Allow from 192.168.146.1 </Location>
90 |
|
Модуль 8. Apache. |
|
|
|