https://
. Настраивая Apache для поддержки SSL, вы можете установить один сервер, который будет по-разному реагировать на обращения через порты с номерами 80 и 443, либо использовать два сервера различных типов. Первый подход реализовать проще, но может возникнуть ситуация, при которой целесообразнее использовать два сервера (например, Apache для обработки SSL-запросов и thttpd
для поддержки обычного HTTP-взаимодействия).
Настройка средств поддержки SSL
Для того чтобы сервер Apache мог поддерживать SSL-соединения, надо сконфигурировать SSL- пакет. В настоящее время в системе Linux чаще всего используются два таких пакета.
• SSLeay (http://www2.psy.uq.edu.au/~ftp/Crypto/ssleay/
)
• OpenSSL (http://www.openssl.org
)
Вскоре после своего появления OpenSSL приобрел статус стандарта в системе Linux. Он содержится в составе многих дистрибутивных пакетов Linux, включая Debian, Mandrake, Red Hat и SuSE. Пакеты SSLeay и OpenSSL выполняют одинаковые функции, но исполняемые файлы носят разные имена (ssleay
и openssl
) и для их настройки используются различные конфигурационные файлы.
После инсталляции OpenSSL вам необходимо получить сертификат. Для работы в Internet потребуется сертификат, выданный CA, но для тестирования сервера можно создать сертификат самостоятельно. Некоторые сценарии установки Apache SSL создают сертификат автоматически. Если в процедуре инсталляции не предусмотрено формирование сертификата, вы можете использовать следующую команду:
# openssl req $@ -new -x509 -nodes
-config /usr/share/doc/apache-ssl/examples/ssleay.cnf
-out /etc/apache-ssl/apache.pem
-keyout /etc/apache-ssl/apache.pem
В данном примере предполагается, что настройка средств поддержки SSL осуществляется посредством конфигурационного файла /etc/apache-ssl
, а в составе пакета поставляется образец конфигурационного файла /usr/share/doc/apache-ssl/example/ssleay.cnf
. При необходимости вы можете изменить имена файлов или каталогов. Обратная косая черта указывает на то, что продолжение команды находится на следующей строке. Если вся команда помещается в одной строке, символ можно не использовать.
В процессе выполнения утилита openssl
запросит дополнительную информацию, например имя компьютера. Эта информация включается в состав сертификата, который содержится в файле /etc/apache-ssl/apache.pem
.
Впоследствии сгенерированный вами сертификат придется заменить сертификатом, который предоставит вам сертифицирующая организация. Если при использовании сертификата, созданного самостоятельно, пользователь, обратившийся к Web-узлу, увидит предупреждающее сообщение, то при наличии сертификата, выданного CA, такое сообщение не выводится. Предупреждающее сообщение, отображаемое броузером Opera в системе Linux, показано на рис. 20.2. В других броузерах формат сообщения будет отличаться от приведенного на рисунке.

Рис. 20.2. При использовании сертификата, сгенерированного самостоятельно, пользователи, взаимодействующие с узлом, увидят предупреждающее сообщение о том, что сертификат не распознан или срок его действия истек
Установка компонентов Apache, предназначенных для поддержки SSL
Считается, что поддержка SSL в сервере Apache осуществляется за счет дополнительных модулей. На практике для установки SSL-модулей необходимо внести некоторые изменения в структуру сервера и повторно скомпилировать Apache. В некоторых инсталляционных пакетах SSL-модули включены по умолчанию, и код сервера скомпилирован с учетом использования SSL-компонентов. Если вы попытаетесь объединить компоненты обычного сервера Apache и пакета, сформированного для обеспечения поддержки SSL, такой сервер скорее всего работать не будет.
Во многих случаях для управления сервером, созданным с учетом поддержки SSL, используется конфигурационный файл, отличный от файла, применяемого для настройки обычного сервера Apache. Например, в системе Debian сервер Apache, настроенный для поддержки SSL, использует конфигурационный файл /etc/apache-ssl
, в то время как для стандартной конфигурации Apache в этой системе применяется файл /etc/apache
. Конфигурационные файлы для SSL- серверов во многом совпадают с файлами для Apache без поддержки SSL, за исключением некоторых директив, значения которых вам, возможно, придется изменить. Часть этих директив описана ниже.
• ServerType
. Сервер с поддержкой SSL не может запускаться посредством суперсервера, поэтому для директивы ServerType
должно быть установлено значение standalone
.
• Использование портов. Для взаимодействия по протоколу SSL используется порт 443. При этом необходимо учитывать, что директива Listen
позволяет связать сервер с определенным номером порта.
• Загрузка модулей. В качестве значений директив LoadModule
и AddModule
могут быть указаны один или несколько модулей, имеющих отношение к поддержке SSL. Как правило, в конфигурационном файле, сформированном по умолчанию, значения этих директив установлены корректно.
• SSLRequireSSL
. Включив данную директиву в состав <Directory>
, вы запретите доступ к каталогу для клиентов, не поддерживающих SSL. (Значения данной директивы не указываются.) Использование SSLRequireSSL
позволяет предотвратить передачу важных данных по незащищенному каналу. Очевидно, что, помимо данной опции, следует применять и другие средства, ограничивающие доступ к каталогу.
• SSLEnable
. Директива SSLEnable
разрешает использование протокола SSL при обмене данными. Подобно SSLRequireSSL
, значения для данной директивы не предусмотрены.
• SSLCACertificatePath
. Эта директива указывает на каталог, содержащий сертификат. Например, в качестве значения SSLCACertificatePath
может быть указано /etc/apache-ssl
.
• SSLCertificateFile
. В качестве значения данной директивы указывается файл, содержащий сертификат (например, /etc/apache-SSI/apache.pem
).
Помимо указанных выше, для управления SSL-взаимодействием могут использоваться и другие директивы. Информацию о них можно получить, просмотрев комментарии в составе конфигурационного файла либо обратившись к документации на сервер Apache или к книгам по данной теме.
Установив конфигурацию сервера, вы можете запускать его для поддержки SSL-взаимодействия. Чтобы обратиться к серверу, надо ввести в поле адреса броузера URL, начинающийся символами https://
. Если вы самостоятельно сгенерировали сертификат, броузер отобразит предупреждающее сообщение, подобное тому, которое показано на рис. 20.2. Чтобы протестировать создаваемый вами узел, вы можете принять этот сертификат (некоторые броузеры позволяют задать