Все о Linux по русски
 О нас  Новости с LinuxNews

 Новости   Документация    ЧаВО    Форум

Ваш LinuxNews   Подписка  

 
*Подключаем к Apache SSL - multik (27-Feb-2001, 18:51)
Сначала нам необходим сам Apache. Если у вас уже есть собранное и работающее
дерево apache, то скопируйте его в безопасное место. Если нет, то вытяните самую
последнюю версию Apache и разверните его.

Здесь я буду добавлять SSL к apache_1.3.14rusPL30.0, но как и всегда, версии
тут не важны - главное сам принцип.

Предварительно вы должны убедиться, что у вас в системе установлен пакет
OpenSSL (www.openssl.org). Просто наберите в командной строке openssl - если
система ответит приглашением OpenSSL>, значит по крайней мере у вас стоят
необходимые библиотеки. Для пользователей систем, основанных на менеджерах
пакетов, необходимо убедиться в том, что стоит пакет openssl-devel.

Для тех же, кто предпочитает идти напролом (как и я ;-) ниже описана простая
последовательность шагов, которые приведут к установке openssl на вашу машину.

Первое - это необходимо взять с www.openssl.org последнюю версию OpenSSL.
Затем распакуйте ее командой tar zxvf openssl-0.9.6.tar.gz (здесь я использую
версию 0.9.6). Перейдите командой cd в каталог openssl-0.9.6 и выполните
./config. Эта команда проинспектирует вашу систему и проверит наличие всего
необходимого для компиляции. Если все прошло без ошибок, давайте команду make.
Теперь вы можете откинуться на спинку кресла, как рекомендует
Microsoft и наблюдать за процессом компиляции OpenSSL.

После сборки переключитесь командой su на пользователя root и дайте команду
make install, а затем ldconfig. Первая команда установит пакеты в дерево
каталогов, а вторая даст задание системе перечитать описание всех библиотек.
НЕ ЗАБУДЬТЕ перед командой ldconfig убедиться, что в файле /etc/ld.so.conf
прописан путь до библиотек OpenSSL. Если вы делали все по умолчанию, то
проверьте наличия пути /usr/local/ssl/lib в этом файле.

Все, OpenSSL установлен у вас в системе.

Теперь осталось дело за малым - модуль mod_ssl, который обеспечивает для
Apache поддержку SSL. Идете на www.modssl.org и берете тот модуль, который
предназначен для вашей версии Apache.

ОБРАТИТЕ ВНИМАНИЕ - модули для других версий Apache могут не заработать или
работать некорректно.

Итак, для apache 1.3.14 подходит модуль mod_ssl-2.7.1-1.3.14.tar.gz (видите,
цифры после знака минуса показывают версию Apache, для которой предназначен
модуль).

Плюс к этому вы должны иметь дерево с исходниками Apache и OpenSSL.

Итак, разворачиваем mod_ssl:

tar zxvf mod_ssl-2.7.1-1.3.14.tar.gz

Переходим в каталог mod_ssl-2.7.1-1.3.14 и даем команду

./configure --with-apache=../apache_1.3.14rusPL30.0 --with-ssl=../openssl-0.9.6

При желании можно добавить и другие параметры, которые вы добавляете при конфигурировании
Apache (например, изменив место, куда будет ставиться Apache или добавив дополнительные
модули, такие как PHP или mod_so) - просто configure от mod_ssl подменяет собой
стандартный configure от Apache.

Теперь переходим в каталог с Apache

cd ../apache_1.3.14rusPL30.0

И компилируем его:
make

Затем

make certificate

Этой командой вы сгенерируете тестовые сертификаты, так что тут вы можете не
особо думать над вопросами, можно просто давить Enter и вводить самые тупые
пароли.

make install

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

Все, можете попробовать запустить apache командой

/usr/local/apache/bin/apachectl startssl

Если все запустилось (по команде ps ax|grep ht появляются httpd -DSSL), то
можете себя поздравить - оно собралось. Попытка обратиться к хосту по протоколу
https не даст вам ничего, так как сам Apache еще не сконфигурирован.

Итак, начнем конфигурировать, открываем в редакторе файл httpd.conf.

Listen 443
NameVirtualHost x.x.x.x:443

Эти команды указывают Apache слушать 443 порт (стандартный порт для https)и
обслуживать на нем виртуальные серверы.

Теперь добавляем описание виртуального сервера.

<VirtualHost x.x.x.x:443>
SSLEngine on
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
SSLLogLevel warn
SSLOptions +StdEnvVars

......
</VirtualHost>

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

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

Входим в каталог с ssl.key
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

Вводим пароль для дешифровки

chmod 400 server.key

И закрываем файл с отрытым ключом от посторонних глаз, все сервер больше не
будет спрашивать пароль. На данном этапе уже должен работать SSL на полную
катушку. То есть, набирая https://host вы должны получать запрос браузера на
использование этого сертификата.

Для того, что бы в дальнейшем облегчить нам жизнь, подредактируем немного
bin/apachectl файл. Исправим в нем условие start на startold, а startssl на
просто start. Затем скопируем его в /etc/rc.d/init.d/httpd. Теперь по умолчанию
при загрузке сервера, будет запускаться Apache с поддержкой SSL.

Чтобы не мучаться с PATH, сделаем, чтобы openssl запускался нормально.

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


Итак, теперь будем генерировать нормальные сертификаты, без всяких SnakeOil.

Генерируем ключ.

openssl genrsa -des3 -out server.key 1024

На данном этапе мы создали server.key, теперь генерируем запрос в службу
верификации.

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

Будьте аккуратны в ответах, ведь это потом увидят все. Если ошиблись, все можн
повторить заново. Да, не ошибитесь, CommonName - это адрес хоста без http://

Все, если вы получили следующую надпись, то запрос сгенерирован правильно

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

Но мы не буржуи, подписывать у нас некому, поэтому мы будет сами
подписывать себя. Хотя если у вас есть деньги и вам необходимо подписать свой
сертификат именно у глобальных авторизационных центров, то на modssl.org Вы
найдете все необходимые адреса и ссылки.

openssl genrsa -des3 -out ca.key 1024
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Генерируем подпись авторизационного центра на год (можно и на больше), процедура
полность схожа с генерацией ключа.

Копируем sign.sh из pkg.contrib из пакета 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
на место старых, но в каталоге c crt файлом Makefile не трогаем. Скопировав
новый .crt файл, наберите make в этом же каталоге - он создаст некий хеш файл.

Все, теперь перезапустите Apache и можете наслаждаться тем, что вы сделали
собственный WWW сервер, защищенный с помощью SSL.

Проверить защищенность вы можете посмотрев информацию о сертификатах или
соединении в info-окнах браузеров. Если вы им не доверяете, то дайте команду

openssl s_client -connect localhost:443 -state -debug

Она выведет полностью всю информацию, которую она сможет выжать из вашего SSL
сервера.

Вот и все.

(с) 2001 Вячеслав Калошин (multik@asplinux.ru)
*Re: Подключаем к Apache SSL - shpac (05-Mar-2001, 04:01)
1. сгенерировать ключ можно проще - сделав сразу ещё самоподписанным. тогда опускаются 3 операции (по созданию сервер, са ключкей и их подписи) <br> <br>2. и ещё хочу добавить тонкость инсталяции SSL на русский апач! <br> <br>Я напоролся на эти грабли и наверняка многие тоже. <br>первое что я естественно попробовал - это залез на мой сайт напролом через SSL и тут же получил задумчивый навечно explorer, тоже было с netscape-ом <br>в логах апач ругался на глики с методом GET. Вообщем не вдаваясь в подробности борьбы пришёл к результату что на SSL не работает перекодировка русского, которая была у меня включена. Т.е. на директории, куда будете открывать шифрованный тунел пропишите: <br><Directory "/home/httpd/cgi-bin"> <br> #no char-set recode! <br> CharsetDisable on <br></directory> <br>к сожалению по-другому это не лечится ;-(
*Re: Подключаем к Apache SSL - DMA (12-Mar-2001, 18:58)
Однако же, неправ товарисч, котрый тут выступал по поводу русского апача + SSL. У меня сейчас апач русский 1.3.14rusPL30.1/mod_perl1.25/mod_SSL2.7.1-1.3.14. Все отлично работает... <br> <br>Но, итить, Мультик, почему же НАСТОЛЬКО МАЛЕНЬКОЕ ОКОШКО-ТО :((( <br>Это же упасть-не встать как неудобно :(

 Ответить на сообщение, помеченное *

Имя
E-mail
Заголовок
Текст
 
 
Top 10
35 Разгоняем жесткие диски
19 Веселие Руси есть Linux`ы
15 Lazarus - открытый ответ Kylix
14 ReiserFS - any comments?
10 120 mb + Linux
9 Новый форум
9 QNX свободна для некоммерческого использования ...
9 Эволюция идет. Полным ходом.
9 локализация Slackware 7.x
8 Никто не знает как дать права root какому либо пользователю
 
freshmeat.net
Mindless Automaton 0.81
Linux 2.4.3pre4
sng 0.9.4
aee 2.2.7
GNU glpk 2.2
KTouch 0.9
GNU cgicc 3.1.5
textutils 2.0.12
Fast Lexical Analyzer Generator 2.5.4a
XLogical 1.0-6
 
appwatch.com
XawTV 3.39
GNU LilyPond 1.3.139
GNU Backgammon 0.10
AutoGen 5.1.4
wmakerconf 2.8.1
Achievo 0.5.4
gPS 0.9.5
Sapphire 0.15.7pre8
heartbeat 0.4.9
GTM 0.4.7
TopList

 Авторское право

 
(c) 2001 SWsoft Pte Ltd.