Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Apache.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
209.41 Кб
Скачать

Обработка ошибок

Директива ErrorDocument код_ошибки имя_файла | сообщение | URL – предназначается для создания собственных сообщений об ошибках.

ErrorDocument 404 ″Извините, это неверный запрос

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

ErrorDocument 404 /errors/404.html

В данном случае HTML-файл может иметь вид:

<html>

<head>

<title>Файл не найден</title>

</head>

<body>

<h1><font color=”red”>Файл не найден</font></h1>

</body>

</html>

Можно также автоматически перенаправить пользователя на другой узел, указав вместо имени файла адрес:

ErrorDocument 404 http://www/newsite.com/moved.html

Коды ошибок:

  • 301 Moved Permanently – запрошенному ресурсу назначен новый URL;

  • 400 Bad Request – неверный синтаксис запроса;

  • 401 Unauthorized – необходима аутентификация;

  • 403 Forbidden – доступ запрещен;

  • 405 Mrthod Not Allowed – неприемлемый метод запроса;

  • 500 Internal Server Error – ошибка конфигурации сервера или внешней программы.

Протокол ssl

SSL (Secure Socket Layer, Протокол (или уровень) защищенных сокетов) спроектирован для обеспечения конфиденциальности обмена между двумя прикладными процессами клиента и сервера. Он предоставляет возможность аутентификации сервера и, опционно, клиента. SSL и требует применения надежного транспортного протокола (например, TCP).

SSL – это коммуникационный протокол с шифрованием, применяемый для передачи защищенной информации по Internet. Преимуществом SSL является то, что он независим от прикладного протокола. Протоколы приложения, такие как HTTP, FTP, TELNET и т.д. могут работать поверх протокола SSL совершенно прозрачно.

Взаимодействие SSL с приложениями:

SSL действует как промежуточный протокол между TCP/IP и протоколами прикладных уровней и, когда клиент устанавливает защищенное соединение, невидимо осуществляет кодирование и декодирование информации.

Основой SSL является шифрование. В SSL используется метод шифрования, называемый криптографией открытых ключей, когда серверная сторона соединения посылает клиенту открытый ключ для шифрования информации, дешифровать которую может только сервер с помощью хранимого им личного ключа. Клиент использует открытый ключ для шифрования и посылки серверу своего собственного ключа, который однозначно идентифицирует его на сервере и не позволяет наблюдающим за линией связи между двумя системами имитировать сервер или клиента.

Протокол SSL предоставляет "безопасный канал", который имеет три основные свойства:

  • Канал является частным. Шифрование используется для всех сообщений после простого диалога, который служит для определения секретного ключа.

  • Канал аутентифицирован. Серверная сторона диалога всегда аутентифицируется, в то время как клиентская – аутентифицируется опционно.

  • Канал надежен. Транспортировка сообщений включает в себя проверку целостности.

Сертификат представляет собой зашифрованную информацию, которая связывает открытый ключ шифрования с удостоверением подлинности личности, сервера или другой сущности, известной как субъект. Издателем сертификата является бюро сертификации (Certification Authority – CA). Сертификат содержит:

  • имя объекта,

  • название организации, с которой связан объект,

  • отдел организации, с которой связан объект,

  • название города или района, в котором находится объект,

  • название штата или области, в котором находится объект,

  • название страны, в которой находится объект,

  • серийный номер сертификата,

  • время действия сертификата.

Самые известные СА – это Verisign и Thawte. Они исследуют различные юридические документы организаций, которые хотят установить свою аутентичность в Internet и после независимой проверки подписывают (заверяют) сертификат собственным открытым ключом.

Сертификат обычно передается в бинарном или кодированном текстовом формате.

Пример транзакции SSL:

Сервер

Запрос на SSL-соединение

Клиент

Клиент

Сервер

Сервер возвращает

  1. Заверенный сертификат сервера

  2. Открытый текст с данными идентификации (ID)

  3. Контрольную сумму данных ID, зашифрованных с помощью секретного ключа сервера

Клиент

Использует известный открытый ключ СА для декодирования отправленного сервером сертификата и извлечения из него открытого ключа сервера

Используя открытый ключ сервера, расшифровывает контрольную сумму данных ID сервера

Контрольная сумма данных ID, полученная от сервера

Определяет контрольную сумму данных ID, отправленных сервером

Подлинность сервера подтверждена (контрольные суммы совпадают)

Контрольная сумма данных ID, вычисленная клиентом

Сравнение контрольных сумм

Обнаружена попытка мошенничества (контрольные суммы не совпадают)

Для того, чтобы web-сервер Apache реагировал на соединения SSL, нужно убедиться в том, что он прослушивает порт 443 – стандартный порт для SSL. Указать это можно в директиве

Listen 443

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

Включение механизма SSL:

SSLEngine On

Личный ключ сервера:

SSLCertificateKeyFile conf/ssl/www.server.com.key

Сертификат для личного ключа:

SSLCertificateFile conf/ssl/www.server.com.crt

При динамической загрузке SSL эти директивы нужно размещать после директив

LoadModule/AddModule

чтобы Apache их понимал. Если указать директивы на уровне сервера, SSL будет разрешен для всего сервера и обычные НТТР-соединения не будут работать ни по какому порту. Если же расположить их в виртуальном хосте на основе IP-адресов, SSL будет разрешен только для одного хоста, выделенного для порта 443.

<VirtualHost 192.168.1.1:443>

ServerName server.com

DocumentRoot /www/docs

SSLCertificateKeyFile conf/ssl/www.server.com.key

SSLCertificateFile conf/ssl/www.server.com.crt

</VirtualHost>

Реализация SSL в отдельной области:

<Directory /home/www/secure/>

SSLrequireSSL

</Directory>

Ведение журналов ошибок и передачи данных

Серверные журналы содержат ценную информацию о том, кто работал с Web-узлом, к каким страницам обращались клиенты и какие ошибки происходили на сервере.

Область хранения журнала ошибок задается директивой

ErrorLog /var/log/httpd/error_log

Уровни протоколирования задаются с помощью директивы

LogLevel <уровень>

Уровни и их назначение:

  • emerg – система нестабильна

  • alert – требуется немедленное действие

  • crit – критическая ошибка

  • error – некритическая ошибка

  • warn – предупреждение

  • notice – все нормально, но стоит обратить внимание

  • info – информационное сообщение

  • debug – уровень отладки

Опасно поднимать уровень протоколирования выше error, так как можно упустить из вида серьезные недостатки в работе системы.

Область хранения журнала передачи данных задается директивой

TransferLog /var/log/httpd/access_log

Таким образом можно описать только один журнал, содержимое которого определяется директивой LogFormat. Дополнительные журналы создаются с помощью директивы CustomLog.

Общий формат журналов:

host

ident

authuser

date

request

status

bytes

имя или адрес

клиента

идентифи-кационная информация

идентифи-катор пользователя

дата и время

запроса

строка

запроса

код

состояния

количество байтов

Директива CustomLog объединяет TransferLog и LogFormat в одной директиве:

CustomLog файл_журнала формат | мнемоническое_имя

Например:

CustomLog /logs/referer_log “%Refereri -> %U” # журнал ссылок

CustomLog /logs/agent_log “%User-Agenti -> %U” # журнал браузеров

LogFormat “%Refereri -> %U” referer-log

CustomLog /logs/referer_log referer-log

Специальные переменные для журналов:

%a

IP-адрес клиента

%A

IP-адрес сервера

%B

переданные байты, кроме НТТР-заголовков

%c

состояние соединения после ответа на запрос: х – соединение было прервано клиентом до завершения получения ответа, t – если клиент использует постоянные соединения, - – если соединение было закрыто после ответа на запрос

%D

количество времени в микросекундах, которое занял ответ на запрос

%{var}e

содержимое переменной окружения var

%f

имя запрашиваемого файла

%h

имя компьютера, передавшего запрос

%H

версия протокола запроса

%{Header}I

содержимое строки заголовка в запросе, переданном на сервер

%l

информация аутентификации, переданная клиентом

%m

метод запроса

%{Header}O

содержимое строки заголовка в ответе сервера

%p

порт, через который был обслужен запрос

%P

идентификатор дочернего процесса, обслужившего запрос

%q

строка запроса

%r

первая строка запроса

%s

состояние, которое сервер вернул в ответ на запрос

%t

время поступления запроса

%T

время, которое понадобилось серверу для обслуживания запроса (в секундах)

%u

имя пользователя при аутентификации

%U

запрошенный URL

%v

имя сервера или виртуального узла, к которому поступил запрос

%V

имя сервера согласно директиве UseCanonicalName

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]