Подключение SSL к веб-серверу

В статье рассмотрено подключение SSL к Apache:
Установка SSL
Подключение SSL к Apache
Генерирование сертификата

 

SSL (Secure Sockets Layer) является методом шифрования разработанным Netscape для обеспечения безопасности в Internet. Этот метод поддерживает несколько методов шифрования, и обеспечивает аутентификацию, как на уровне клиента, так и на уровне сервера. SSL работает на транспортном уровне и поэтому обеспечивает надежное шифрование всех типов данных.

Протокл S-HTTP является еще одним "безопасным" Internet-протоколом. Он был разработан для предоставления конфиденциальности данных, передаваемых через соединение. Конфиденциальность нужна, например, при передаче номеров кредитных карточек и прочей важной информации.

Модуль mod_ssl реализует в Apache слой SSL, который реализует шифрование всего потока данных между клиентом и сервером. Для всех остальных частей Web-сервера модуль mod_ssl является прозрачным. Для работы в этом режиме, требуется броузер, поддерживающий механизм SSL (этому условию удовлетворяют все современные распространенные броузеры).

Apache можно установить из rpm-пакетов (в случае RedHat-совместимых систем) или устанавливать Web-сервер из исходников. Самая последняя версия всегда доступна apache.org.

Теперь нужно установить OpenSSL. Возможно у вас в системе уже установлен пакет OpenSLL. Для проверки этого введите openssl - если вы увидите в ответ приглашение OpenSSL>, значит OpenSSL уже установлен.

Для установки OpenSSL (если еще не установлен) выполните следующие шаги (перед этим выполните команду su для привилегий суперпользователя):

Распакуйте последнюю версию командой tar zxvf openssl-x.y.z.tar.gz (x.y.z - номер версии).

Перейдите в каталог openssl-x.y.z и выполните команду ./config. Если все нормально (нет ошибок) введите команду make. В противном случае вам, скорее всего, придется установить недостающие пакеты.

Затем нужно ввести команды make install и ldconfig. Перед выполнением команды ldconfig убедитесь, что в файле /etc/ld.so.conf прописан путь к библиотекам OpenSSL (по умолчанию это /usr/local/ssl/lib).

Теперь осталось подключить 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.y.z-2.0.0.tar.gz и выполните команду

./configure --with-apache=../apache_1.3.14 --with-ssl=../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

Теперь создаем виртуальный сервер, работающий по протоколу https:


# Эти строки нужны для поддержки 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 Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot /var/httpd/www/html
ErrorLog /var/https/www/logs/error.log


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

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
chmod 400 server.key

Почти все готово! Теперь сервер не должен запрашивать пароль и должен работать в нормальном режиме. При обращении https://host.domain броузер должен спросить вас на предмет использования сертификата.

Чтобы Apache по умолчанию стартовал с поддержкой SSL, исправим в файле bin/apachectl условие start на startold, а startssl на просто start

Теперь, находясь в каталоге .usr/local/bin, установим ссылку openssl

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

 

Приступим к генерированию сертификатов. Выполните команду

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.

Теперь скопируйте 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-файлом.

Теперь вы получили полностью работающий Apache, защищенный SSL. Для сбора полной информации о работе SSL введите:

openssl s_client -connect localhost:443 -state -debug

Материал взят с ресурса DKWSLabs

Меню

Главная

Компьютерная помощь
Ремонт компьютеров
Ремонт ноутбуков
Ремонт планшетов
Ремонт apple
Веб-мастерская
Заправка картриджей

Веб-мастеру

HTML (1)
CSS (8)
Java Script (2)
PHP
XML (2)
DLE (2)
Joomla (17)
ModX (1)
WordPress
Drupal (1)

Сис-админу

Windows (18)
*nix (1)
Apple (1)

Контакты


tel: +7 (904) 214 82 20
подробнее


Панель управления

Not registered?