* | Подключаем к 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>Это же упасть-не встать как неудобно :( |
|
| |
|