Anshlag - калужское объединение друзей - туристов. Отдых, путешествия, туризм.

Anshlag - калужское объединение друзей - туристов. Отдых и путешествия по Карелии, туризм, водные походы. Отчеты о походах, рассказы туристов, новости туризма. Форум, гостевая, походные фотографии.



  
 Четверг, 21 марта 2019, 02:14:44 

Подключаем к Apache SSL
Подключаем к Apache SSL

Быстрый переход ...

» Подключаем к Apache...

* Подключаем к 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 --activate-module=src/modules/php4/libphp4.a --with-ssl=../openssl-0.9.7b --with-apache=../apache_1.3

При желании можно добавить и другие параметры, которые вы добавляете при конфигурировании
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)и
обслуживать на нем виртуальные серверы.

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


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

......


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

Теперь можно попробовать перезапустить сервер. Опс, при запуске 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


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

Копируем 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
сервера.



Прокомментировать
Хотите оставить свои комментарии? Зарегистрируйтесь на нашем сайте!

 
(c) Anshlag 2002 - 2008