16.10.2. Подключение SSL к Apache

16.10.2. Подключение SSL к Apache

Версия mod_ssl, которую вам нужно установить, должна быть совместима с вашей версией Apache, иначе модуль mod_ssl будет некорректно работать или вообще откажется что-либо делать. Последние цифры в названии модуля указывают на совместимость с определенной версией Apache. Например, для Apache 1.3.14 нужен файл mod_ssl-2.7.1-1.3.14.tar.gz.

Для сборки mod_ssl из исходных текстов выполните команду:

#./configure --with-apache=../apache_1.3.14 --with-ssl=../openssl-0.9.5

В данном примере я использую OpenSSL 0.9.5. Теперь перейдите в каталог с Apache, откомпилируйте его и установите сертификат:

# cd ../apache-1.3.14

# make

# make certificate

# make install

Таким образом вы установите Apache в каталог, указанный в опции --prefix (по умолчанию /usr/local/apache).

Теперь попробуйте запустить Apache. Это можно сделать с помощью команды:

# usr/local/apache/bin/apachectl startssl

Параметр startssl необходим для включения SSL. Сервер Apache уже функционирует, однако обратиться по протоколу HTTPS вы еще не можете. Для этого вам нужно сконфигурировать виртуальные узлы, которые будут использовать протокол HTTPS. Но для начала необходимо настроить Apache для прослушивания порта 443 (это стандартный порт для протокола HTTPS). Добавьте в файл /etc/httpd/conf/httpd.conf следующие строки:

Listen 443

NameVirtualHost x.х.x.х:443

Теперь непосредственно приступите к созданию виртуального сервера, работающего по протоколу HTTPS, для чего продолжите редактирование файла /etc/httpd/conf/httpd.conf. Пример того, что необходимо при этом ввести, приведен в листинге 16.14. После этих обязательных директив вы можете конфигурировать свой виртуальный узел как обычно.

Листинг 16.14. Виртуальный HTTPS-сервер

<VirtualHost x.х.x.х:443>

 # Эти строки нужны для поддержки SSL

 SSLEngine on

 SSLLogLevel warn

 SSLOptions +StdEnvVars

 SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt

 SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key

 SSLLog /usr/local/apache/logs/ssl_engine.log

 # --------------------------------------

 ServerName www.dhsilabs.com

 ServerAdmin webmaster@den.dhsilabs.com

 DocumentRoot /var/httpd/www/html

 ErrorLog /var/https/www/logs/error.log

</VirtualHost>

Теперь нужно перезапустить сервер httpd. При запуске Apache потребует ввести пароль. Если вы не хотите вводить его при каждом запуске системы, то перейдите в каталог, где находится файл ssl.key, и выполните следующие команды:

# cp server.key server.key.org

# openssl rsa -in server.key.org -out server.key

# chmod 400 server.key

Почти все готово! Теперь сервер не должен запрашивать пароль и будет работать в нормальном режиме.

Чтобы Apache по умолчанию стартовал с поддержкой SSL, исправьте в файле apachectl (он устанавливается в каталог /bin, /sbin или /usr/sbin, см. rpm -ql <пакет_Apache>) условие start на startold, a startssl на просто start. Затем, находясь в каталоге /usr/local/bin, установите ссылку openssl:

# ln -s /usr/local/ssl/bin/openssl openssl

Данный текст является ознакомительным фрагментом.