- •Лабораторная работа 1 Использование сетевых утилит (маленькая…)
- •Лабораторная работа 2 Программное обеспечение для организации «виртуальных машин» - vMware Player.
- •5 Основных причин внедрить по виртуализации
- •Лабораторная работа 3 Установка FreeBsd 10.0 на «виртуальную машину» на базе vMware Player. Первоначальная настройка сервера на основе FreeBsd 10.0.
- •Лабораторная работа 5 Установка и настройка Web-сервера (Apache, php).
- •Лабораторная работа 6 Протокол http. Обмен данными между web-сервером и клиентом по протоколу http.
- •Лабораторная работа 7 Расширенная настройка web-сервера Apache.
- •Лабораторная работа 8 Среда разработки NetBeans ide. Отладка JavaScript и php сценариев на удаленном web-сервере с помощью NetBeans ide и расширения xDebug.
- •Лабораторная работа 9 Основы построения ajax приложений.
- •Лабораторная работа 10 Взаимодействие с сервером, передача данных. Методы get, post, head.
- •Часть 1. Запрос методом get.
- •Часть 2. Запросы методом post и head.
- •Лабораторная работа 11 Передача сложных типов данных. Нотация json.
- •Часть 1. Форма авторизации пользователя.
- •Часть 2. Проверка пользователя.
- •Часть 3. Закрыть сообщение об ошибке.
- •Часть 4. Список пользователей online.
- •Лабораторная работа 12 Использование xml. Xmlrpc.
- •Часть 1. Получение способов доставки.
- •Часть 2. Отображение способов доставки на экране.
- •Часть 3. Получение расчетной общей стоимости заказа.
- •Часть 4. Отображение данных детализации расчета стоимости заказа.
- •Лабораторная работа 13 Использование xml Webсервисов. Протокол soap.
- •Часть 1. Изучение xml файлов с текстом soap сообщений.
- •Часть 2. Регистрация новой сессии пользователя.
- •Часть 3. Добавление книг в корзину.
- •Часть 4. Отображение содержания корзины на экране.
- •Часть 5. Очистка корзины.
- •Лабораторная работа 14 Безопасность и эффективность ajax приложений.
- •Часть 1. Запрос «соли» хеширования с сервера.
- •Часть 2. Хеширование пароля.
- •Часть 3. Вывод результата авторизации.
- •Часть 4. Загрузка больших объемов данных (глав книги).
- •Часть 5. Показ главы книги.
Лабораторная работа 7 Расширенная настройка web-сервера Apache.
Цель
Изучить дополнительные возможности настройки web-сервера Apache на платформе FreeBSD.
Теоретические сведения
htaccess – файл дополнительной конфигурации веб-сервера Apache. Позволяет задавать большое количество дополнительных параметров и разрешений для работы web-сервера у отдельных пользователей (а так же на различных папках отдельных пользователей), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., не предоставляя доступа к главному конфигурационному файлу т.е. не влияя на работу всего сервиса целиком.
Файл htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess присутствует в любом каталоге пользователя.
Файл .htaccess может быть размещен в любом каталоге. Директивы этого файла действует на все файлы в текущем каталоге и во всех его подкаталогах (если эти директивы не переопределены директивами нижележащих файлов .htaccess).
Установка пароля на каталоги
Команда htpasswd
Если создаем первого пользователя и соответственно еще не имеем файла с пользователями и паролями, то используем ключ -с
htpasswd -c passwd test
Пароль храниться в зашифрованном виде.
Для добавления нового пользователя используем команду
htpasswd passwd test1
Простое перенаправление. Инструкция Redirect.
Redirect [status] URL_LOCAL URL_REDIRECT
status – необязательное поле, определяет код возврата
permanent (301 – документ перемещен постоянно)
temp (302 – документ перемещен временно)
seeother (303 – смотрите другой)
gone (410 – убран)
URL_LOCAL – локальная часть URL запрашиваемого документа
URL_REDIRECT – URL куда должен быть выполнен редирект
Сложное перенаправление. Модуль mod_rewrite.
Модуль mod_rewrite – это мощнейшее, интеллектуальное средство преобразования URL-адресов.
Данный модуль представляет собой основанный на правилах механизм (синтаксический анализатор с применением регулярных выражений), выполняющий URL преобразования на лету. Модуль поддерживает неограниченное количество правил и связанных с каждым правилом условий. URL преобразования могут использовать разные источники данных, например переменные сервера, переменные окружения, HTTP заголовки.
Директива RewriteCond – определяет условие, при котором происходит преобразование. RewriteCond определяет условия для какого-либо правила.
Директива RewriteRule располагаются после одной или несколько директив RewriteCond. Правило преобразования используется только тогда, когда URI соответствует условиям директивы RewriteCond и также условиям дополнительных директив RewriteCond.
Директива RewriteEngine включает или выключает работу механизма преобразования. Если она установлена в положение off этот модуль не работает. Необходимо включать механизм преобразования (RewriteEngine on) для каждого виртуального хоста, если необходимо использовать модуль mod_rewrite.
Выполнение
В файле httpd.conf в секции <Directory "/usr/local/www/apache24/data"> закомментируем инструкцию AllowOverride None и добавим инструкцию AllowOverride All
В каталоге /usr/local/www/apache24/data создайте каталог test и в нем файл index.html следующего содержания. Можете воспользоваться любым FTP клиентом.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="koi8-r">
<title>Сайт супер фирмы</title>
</head>
<body>
<p>Сайт СУПЕР ФИРМЫ</p>
</body>
</html>
В браузере открываем сайт www.server_freebsd.mycompany.ru/test, смотрим что получилось.
Переименуйте файл index.html в каталоге test в index.htm.
В браузере опять пытаемся открыть сайт www.server_freebsd.mycompany.ru/test. Получаем содержание каталога.
В каталоге test создаем файл .htaccess и добавляем в него строчку
Options All -Indexes
Выполните рестарт web-сервера.
В браузере опять пытаемся открыть сайт www.server_freebsd.mycompany.ru/test Получаем ошибку 403 – Доступ запрещен. Т.е. мы запретили возможность просмотра содержимого каталога test.
В каталоге test создаем каталог txt и в нем создаем пару файлов с расширением txt и произвольного содержания.
Пробуем в браузере попасть в каталог txt нашего сайта
www.server_freebsd.mycompany.ru\test\txt
Не получается – ошибка 403.
В каталоге txt создаем новый файл .htaccess со следующей строчкой
Options Indexes
Выполните рестарт web-сервера.
Повторяем попытку и получаем разрешение на просмотр каталога txt
Организуем доступ в каталог txt только авторизованным пользователям.
Создадим пользователя test и пароль для него, все данные будут храниться в файле /usr/local/www/apache24/passwd в зашифрованном виде.
htpasswd –c /usr/local/www/apache24/passwd test
Правим файл .htaccess в каталоге txt
AuthName “Protected area, need authorization”
AuthType Basic
AuthUserFile /usr/local/www/apache22/passwd
require valid-user
Выполните рестарт web-сервера.
Пробуем в браузере попасть в каталог txt нашего сайта. Получаем запрос на ввод имени и пароля. Если авторизация прошла успешно, то получаем доступ.
www.server_freebsd.mycompany.ru\test\txt
Поэкспериментируем с директивами простого перенаправления (redirect).
В файл .htaccess в каталоге test нашего сайта добавим следующую строчку
Redirect /test/freebsd http://freebsd.org
В браузере в строке URL наберем следующий путь
www.server_freebsd.mycompany.ru\test\freebsd
Убеждаемся, что произошел переход на сайт freebsd.org (не забываем перезапустить Apache, т.к. файлы .htaccess читаются один раз при запуске и изменения в них не подхватываются «на горячую»).
Для организации более изощренного перенаправления будем использовать модуль mod_rewrite, который входит в состав web-сервера Apache и является мощным средством преобразования URL адресов. В файле httpd.conf включаем использование модуля, снимаем комментарий со строки
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
Для получения отладочной информации и протоколирования работы модуля mod_rewrite (запись ведется в стандартный файл ошибок httpd – httpd-error.log) достаточно в файле httpd.conf добавить строку
LogLevel warn mod_rewrite.c:trace4
Выполните рестарт web-сервера.
Используем модуль для перенаправления URL www.server_freebsd.mycompany.ru/test/old в каталог new на нашем сайте.
Создаем в каталоге test каталог new и размещаем в нем index.html следующего содержания
<html>
<head>
<meta charset="koi8-r">
<title>Перешли к новым файлам из OLD</title>
</head>
<body>
<h1>Перешли к новым файлам из OLD</h1>
</body>
</html>
В каталоге new создаем файл .htaccess следующего содержания
Options +Indexes +FollowSymLinks
DirectoryIndex index.html
Проверяем работоспособность – в браузере открываем следующий URL
http:// www.server_freebsd.mycompany.ru/test/new
Должны получить созданную выше index.html.
Выполним настройку редиректа URL http:// www.server_freebsd.mycompany.ru/test/old в каталог new. Правим файл .htaccess в каталоге test, добавляем следующие строчки
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} test/old
RewriteRule (.*) /test/new/
Проверяем работу перенаправления, в браузере открываем URL www.server_freebsd.mycompany.ru/test/old. Должна открыться страничка index.html, физически размещенная в каталоге new нашего сайта.
Проанализируйте протокол работы модуля перенаправления mod_rewrite. Помните, что должна быть включена соответствующая опция в файле httpd.conf.
Поэкспериментируем с перенаправлением использую значение серверной переменной USER-AGENT.
Будем использовать браузер Chrome и следующие расширения для него: HTTP Header – для просмотра заголовков; User-Agent Switcher for Chrome – для изменение идентификации браузера при обращении к web-серверу.
Создадим структуру каталогов для эксперимента. В каталоге data создаем каталоги doc, android и no_android. При попытке открыть в браузере URL http:// www.server_freebsd.mycompany.ru/doc необходимо будет выполнить перенаправление в зависимости от содержания поля USER-AGENT:
содержит подстроку «Android» – открываем index.html из каталога android
не содержит подстроку «Android» – открываем index.html из каталога no_android
В каталоге doc создаем файл .htaccess, где определяем правила перенаправления, следующего содержания
Options +Indexes +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^.*Android.*
RewriteRule ^(.*)$ /android/ [L]
RewriteRule ^(.*)$ /no_android/ [L]
В каталоге android создаем index.html следующего содержания
<html>
<head>
<meta charset="koi8-r">
<title>USER-AGENT содержит Android</title>
</head>
<body>
<h1>USER-AGENT содержит Android</h1>
</body>
</html>
В каталоге no_android создаем index.html следующего содержания
<html>
<head>
<meta charset="koi8-r">
<title>USER-AGENT НЕ СОДЕРЖИТ Android</title>
</head>
<body>
<h1>USER-AGENT НЕ СОДЕРЖИТ Android</h1>
</body>
</html>
В каждом каталоге android и no_android создаем файл .htaccess следующего содержания
Options +Indexes +FollowSymLinks
DirectoryIndex index.html
Выполняем проверку настроек. В браузере Chrome открываем URL http:// www.server_freebsd.mycompany.ru/doc. И смотрим заголовки HTTP-запроса.
Изменяем с помощью расширения User-Agent Switcher for Chrome идентификацию браузера
В браузере Chrome открываем URL http://www.server_freebsd.mycompany.ru/doc. И смотрим заголовки HTTP-запроса.
Пробуем заменить сообщения об ошибках. В каталоге data создаем каталог err, в котором создаем новый файл с именем 404.html и следующим содержанием
<html>
<head>
<meta charset=”koi8-r”>
<title>Error 404 </title>
</head>
<h2 style="text-align: center";>
404
<span style="color: #ff0000";><strong>Файл не найден</strong></span>
</h2>
<h1 style="text-align: center";>
<span style="color: #0000ff";>
К сожалению, здесь нет того содержания, которое Вы искали.
</span>
<span style="color: #0000ff";>
Пожалуйста, попробуйте выбрать нужную информацию, перейдя на главную страницу сайта:
</span>
</h1>
<h1 style="text-align: center";>
<span style="color: #ff0000";>
<a href=http://testsite target="_blank">
<span style="color: #ff0000";>
Наш сайт
</span>
</a>
</span>
</h1>
</html>
В файл .htaccess, который расположен в каталоге data добавляем следующую строчку
ErrorDocument 404 /err/404.html
Пробуем открыть заведомо несуществующую страницу нашего сайта http:// www.server_freebsd.mycompany.ru/rr.html. Если все сделали правильно, то должны получить следующее сообщение об ошибке.
И напоследок, настроим возможность подключения к сайту с помощью протокола HTTPS и использованием SSL-сертификатов.
Прежде всего, необходимо сгенерировать корневой сертификат организации, которым будем подписывать сертификат, предназначенный для сайта www.server_freebsd.mycompany.ru. Воспользуемся программой openssl.
Все сертификаты будем сохранять в каталоге /etc/ssl, сделаем ее текущей
cd /etc/ssl
Создаем ключ для корневого сертификата
openssl genrsa -out rootCA.key 2048
Используя сгенерированный ключ, создаем корневой сертификат сроком действия 365 дней. На вопросы отвечаем примерно как на картинке ниже.
openssl req -x509 -new -key rootCA.key -days 365 -out rootCA.crt
Теперь можно создавать сертификат для нашего сайта и подписывать его корневым сертификатом нашей организации.
Создаем ключ
openssl genrsa -out www.server_freebsd.mycompany.ru.key 2048
Создаем запрос на сертификат. При ответе на вопросы обратите внимание на Common name – оно должно совпадать с именем сайта (www.server_freebsd.mycompany.ru) и пароль должен превышать 10 символов.
openssl req -new -key www.server_freebsd.mycompany.ru.key -out www.server_freebsd.mycompany.ru.csr
Подписываем запрос на сертификат корневым сертификатом нашей организации (rootCA.crt), который сгенерировали ранее. Срок действия указываем 365 дней.
openssl x509 -req -in www.server_freebsd.mycompany.ru.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out www.server_freebsd.mycompany.ru.crt -days 365
Выполним настройку web-сервера для обеспечения поддержки SSL-сертификатов.
Включаем поддержку SSL web-сервера Apache – в файл /etc/rc.conf добавляем следующую строку
apache24ssl_enable=”YES”
Настройки для работы с SSL Apache будет «брать» из файла httpd-ssl.conf, который находится по умолчанию в каталоге /usr/local/etc/apache24/extra. В файле httpd.conf добавим строку (в общем случае путь к конфигурационному файлу может быть произвольным, мы оставляем по умолчанию)
Include etc/apache24/extra/httpd-ssl.conf
Раскомментируем строку в httpd.conf
LoadModule ssl_module libexec/apache24/mod_ssl.so
Редактируем файл /usr/local/etc/apache24/extra/httpd-ssl.conf (находим строки, заменяем их или добавляем несуществующие)
<VirtualHost *:443>
DocumentRoot “/usr/local/www/apache24/data”
ServerName www.server_freebsd.mycompany.ru
ErrorLog /var/log/httpd-error.log
TransferLog /var/log/httpd-access.log
SSLCertificateFile “/etc/ssl/www.server_freebsd.mycompany.ru.crt”
SSLCertificateKeyFile “/etc/ssl/www.server_freebsd.mycompany.ru.key”
SSLCertificateChainFile “/etc/ssl/www.server_freebsd.mycompany.ru.crt”
</VirtualHost>
Выполняем команду
apachectl graceful
Возможно будет ругаться, тогда раскомментируем строки
LoadModule cache_socache_module libexec/apache24/mod_cache_socache.so
LoadModule cache_module libexec/apache24/mod_cache.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
Если ошибок не обнаружено, то проверяем работоспособность нашего сайта по протоколу HTTPS. В браузере открываем URL
https://www.server_freebsd.mycompany.ru
Скорее всего, Вы получите следующее сообщение об ошибки
Браузер предупреждает, что сертификат подписан неизвестным корневым сертификатом. Тем не менее, мы продолжаем на свой страх и риск и получаем следующий результат
Для исправления ситуации выполним импорт корневого сертификата, которым мы и подписывали сертификат для сайта в локальное хранилище корневых сертификатов. Любым удобным для Вас способом скопируйте файл /etc/ssl/rootCA.crt на локальный компьютер (базовая ОС). Проще всего забрать по FTP.
Посмотрим сертификаты, которые присутствуют на нашем локальном компьютере (базовая ОС). Для этого воспользуемся соответствующей оснасткой консоли управления MMC.
Запускаем консоль управления из командной строки cmd.
mmc
Выполним добавление нужной нам оснастки.
Файл –> Добавить или удалить оснастку
Из списка доступных оснасток выбираем «Сертификаты» и жмем кнопку «Добавить».
В открывшемся окне выбираем опцию «учетная запись компьютера», жмем «Далее» и «Готово»
После этого оснастка появится в списке «Выбранные оснастки…», для завершения жмем «ОК»
Выбираем узел «Доверенные корневые центры сертификации», в него и будем выполнять импорт корневого сертификата rootCA.crt
Отвечает на простые вопросы мастера импорта
В итоге получаем корневой сертификат в нашем локальном хранилище.
В браузере открываем URL https://www.server_freebsd.mycompany.ru и видим, что сертификат опознан, и обмен данными между браузером и web-сервером выполняется в рамках защищенного соединения.
На этом пока все, какие мы молодцы.
