Чтение онлайн

ЖАНРЫ

Linux-сервер своими руками

Колисниченко Денис Николаевич

Шрифт:

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

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

tar zxvf mod_ssl-x.у.z-2.0.0.tar.gz

и выполните команду:

./configure –with-apache=../apache_1 .3.14 –with-ssl=../openssi-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. С этой целью откройте любым редактором файл /etc/httpd/conf/httpd.conf и добавьте в него следующие строки:

Listen 443

NameVirtualHost x.x.x.x:443

Примечание. Порт 443 — это стандартный порт для протокола HTTPS. Именно по этому порту Apache будет прослушивать виртуальные хосты. 

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

Листинг 12.12. Виртуальный https-cepвep

<VirtualHost x.x.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, исправьте в файле bin/apachectl условие start на startold, a startssl на просто start. Затем, находясь в каталоге .usr/local/bin, установите ссылку openssl:

ln –s /usr/local/ssl/bin/openssl openssl

12.5.3. Генерирование сертификатов

Сертификат гарантирует безопасное подключение к Web-серверам и (или) удостоверяет личность владельца. Идентификация обеспечивается путем применения личного ключа, известного только пользователю данной системы. Когда пользователь посещает защищенный узел для передачи секретной информации (например, номеров кредитных карточек) по протоколу https, узел автоматически пошлет ему сертификат.

Итак, давайте приступим к генерированию сертификатов. Для этого сначала выполните команду:

openssl genrsa –des3 –out server.key 1024

Она создаст файл server.key. После этого вы должны подать запрос в службу верификации:

openssl req –new –key server. key –out server.csr

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

You now have to send this Certificate Signing Request (CSR) to a Certifying Authority (CA) for signing

Отвечая на вопросы, будьте очень внимательны — ваши ответы увидит весь мир.

По всем правилам, вы сейчас должны подписать сертификат у доверенного лица, но за неимением желания платить за это деньги, подпишите сами себя:

openssl genrsa –des3 –out ca.key 1024

openssl req –new –x509 –days 365 –key ca.key –out ca.crt

В данном случае у вас получится «самоподписанный» сертификат. Если вы хотите получить полноценный сертификат, то вам придется заплатить за подпись деньги. Для этого добро пожаловать на сайт www.thawte.com. В России представителем этого сайта является solutions.rbc.ru. Компания ThawTe занимается генерированием полноценных сертификатов. Получить сертификат от ThawTe можно, естественно, за деньги. На сайте же solutions.rbc.ru просто перепродают услуги компании ThawTe.

Возвращаясь к генерированию сертификата, скопируйте sign.sh из пакета mod_ssl в каталог с ключами и подпишите себя:

./sign.sh server.csr

Если на экране появится надпись:

Now you have two files: server.key and server.crt.

These now can be used as following

то это означает, что все собрано правильно. Затем скопируйте новые файлы server.key и server.crt на место старых. Выполните команду make в каталоге с .crt-файлом.

Поделиться с друзьями: