- Настройка Apache + SSL для работы сайта по HTTPS
- Шаг 1. Создание сертификата
- Шаг 2. Установка модуля SSL для Apache
- Шаг 3. Настройка Apache
- Шаг 4. Проверка работоспособности
- Шаг 5. Настройка редиректа
- В конфигурационном файле
- В файле .htaccess
- Установка модуля rewrite
- Apache + NGINX
- Настройка HTTPS для Apache 2.4 под Windows
- Два слова о протоколе HTTPS
- Генерация криптографических ключей
- Получение сертификата
- Настройка веб-сервера
- Литература:
- Настройка веб-сервера Apache под Windows
- План работ:
- 1. Установка Apache под Windows
- 2. Выпуск самоподписанного сертификата Windows
- 3. Публикация информационной базы Windows
- 4. Проверка публикации
Настройка Apache + SSL для работы сайта по HTTPS
Инструкция написана для операционных систем на базе UNIX.
Шаг 1. Создание сертификата
Для боевого сервера, сертификат должен быть получен от доверенного центра сертификации — либо локального для компании, либо коммерческого. Или получен бесплатно от Let’s Ecnrypt.
Для тестовой среды можно сгенерировать самоподписанный сертификат. Для этого сперва переходим в рабочую папку.
а) на Red Hat / CentOS:
б) на Debian / Ubuntu:
Создаем папку для сертификатов и переходим в нее:
mkdir ssl ; cd ssl
И генерируем сертификат:
openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.dmosk.local/CN=test»
* в данном примере созданы открытый и закрытый ключи на 4 года (1461 день); значения параметра subj могут быть любыми в рамках тестирования.
Шаг 2. Установка модуля SSL для Apache
Прежде, чем устанавливать модуль, выполняем команду:
apachectl -M | grep ssl
Если видим строчку, на подобие:
Спускаемся к шагу 3 данной инструкции.
Иначе, устанавливаем httpd ssl_module.
yum install mod_ssl
б) Для Ubuntu/Debian:
Открываем файл конфигурации apache:
* подразумевается, что используется apache 2.4.
Находим и снимаем комментарии со следующих строчек:
.
LoadModule ssl_module libexec/apache24/mod_ssl.so
.
Include etc/apache24/extra/httpd-ssl.conf
.
И ставим комментарии в следующих строках:
#
#SSLRandomSeed startup builtin
#SSLRandomSeed connect builtin
#
Чтобы настройки применились, необходимо перезапустить веб-сервер одной из команд:
systemctl restart httpd
systemctl restart apache2
service apache2 restart
* первая, как правило, используется в системах на базе RPM, вторая — DEB, третья — BSD.
Шаг 3. Настройка Apache
Выходим из папки ssl:
Открываем файл с настройкой виртуальный доменов.
* где site.conf — конфигурационный файл для конкретного сайта
В открытый файл добавляем следующее:
ServerName site.ru
DocumentRoot /var/www/apache/data
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
* где ServerName — домен сайта; DocumentRoot — расположение файлов сайта в системе; SSLCertificateFile и SSLCertificateKeyFile — пути до файлов ключей, которые были сгенерированы на шаге 1.
Проверяем корректность настроек в Apache:
Перечитываем конфигурацию apache:
Шаг 4. Проверка работоспособности
Открываем браузер и переходим на наш сайт, добавив https://. При использовании самоподписного сертификата (как в нашем случае), обозреватель выдаст предупреждение, что передача данных не безопасна. Подтверждаем наше намерение открыть сайт. Если все работает, переходим к шагу 5.
Если сайт не заработал, пробуем найти причину по log-файлу. Как правило, он находится в каталоге /var/log/apache или /var/log/httpd.
Шаг 5. Настройка редиректа
Чтобы все запросы по http автоматически перенаправлялись на https, необходимо настроить перенаправление (redirect). Есть несколько способов это сделать.
В конфигурационном файле
Открываем файл с настройкой виртуальных доменов (как в шаге 3) и дописываем следующее:
ServerName site.ru
RewriteEngine On
RewriteCond %
RewriteRule (.*) https://%
* в конкретном примере, мы перенаправили все запросы для сайта site.ru.
** обратите особое внимание, что если у Вас уже есть VirtualHost *:80 для настраиваемого сайта, необходимо его закомментировать или отредактировать.
В файле .htaccess
Установка модуля rewrite
Чтобы перенаправление работало в Apache, необходимо установить модуль rewrite.
а) в CentOS открываем конфигурационный файл и проверяем наличие строки:
LoadModule rewrite_module modules/mod_rewrite.so
* если ее нет, добавляем; если она закомментирована, снимаем комментарий.
systemctl restart httpd
systemctl restart apache2
Apache + NGINX
При использовании веб-сервера на базе и Apache и NGINX, как правило, наружу смотрит последний. В таком случае, именно он будет отвечать на http-запросы, и в таком случае нужно настраивать SSL на NGINX.
Как настроить Apache для работы по HTTPS (SSL)
Настройка HTTPS для Apache 2.4 под Windows
Два слова о протоколе HTTPS
HTTPS — это протокол обмена данными, который полностью описывается фразой «HTTP поверх SSL/TLS». Когда пользователь набирает в браузере адрес сайта, например, «https://www.site.com/info.html», происходит следующее:
- Веб-браузер посредством DNS-запроса определяет IP-адреса сервера «www.site.com». Если не используется технология DNSCrypt, этот запрос происходит в открытом виде, без шифрования.
- Между веб-браузером и веб-сервером устанавливается защищённый канал передачи данных SSL/TLS.
- По защищённому каналу осуществляется обмен между веб-браузером и веб-сервером по протоколу HTTP.
При установке HTTPS-соединения веб-браузеры проверяют подлинность сервера с использованием сертификата, выданного ему удостоверяющим центром. Сертификат — это подписанные секретным ключом удостоверяющего центра открытый ключ веб-сервера и информация о сервере. Если сертификат недействителен или данные, указанные в сертификате, не совпадают с реквизитами сервера, пользователю будет выдано предупреждение с рекомендацией отказаться от работы с этим сервером.
Чтобы с веб-сервером Apache можно было взаимодействовать по протоколу HTTPS, понадобится:
- Сгенерировать криптографические ключи веб-сервера.
- Получить сертификат веб-сервера.
- Настроить веб-сервер на работу по протоколу HTTPS.
В дальнейшем изложении предполагается, что установка и настройка веб-сервера выполнена в соответствии с рекомендациями, изложенными в статье «Параметрическая настройка Apache 2.4 под Windows».
Генерация криптографических ключей
Для генерации криптографических ключей понадобится ввести ряд команд в окне командной строки. Прежде всего, для хранения криптографических файлов создадим папку «D:\www\conf\ssl» и сделаем её текущей:
D:
MD \www\conf\ssl
CD \www\conf\ssl
Механизмы криптографии в поставке Apache от Apache Lounge реализованы с помощью пакета OpenSSL, который представлен программой «Apache24\bin\openssl.exe». Чтобы не набирать постоянно полный путь к ней, добавим папку с двоичными файлами веб-сервера в переменную среды окружения PATH:
PATH %PATH%;«%ProgramFiles%\Apache24\bin»
Для генерации секретного ключа сервера нужно в консоли OpenSSL ввести команду:
openssl.exe genrsa -out server.key 2048
В этой команде «server.key» — это имя файла, в который будет записан секретный ключ, а «2048» — длина ключа в битах. Файл «server.key» содержит конфиденциальную информацию, поэтому нужно принять меры по его защите, чтобы предотвратить компрометацию сервера.
Открытый ключ сервера может быть извлечён из секретного ключа и выгружен в файл «server.pub» командой:
openssl.exe rsa -in server.key -pubout > server.pub
Однако для настройки HTTPS-сервера в явном виде открытый ключ нигде не требуется.
Получение сертификата
Чтобы получить сертификат веб-сервера, нужно на основе криптографических ключей составить запрос в удостоверяющий центр на выдачу сертификата. Формирование запроса производится командой:
openssl.exe req -new -key server.key -out server.csr -config ../openssl.cnf
В параметре «-config» указан путь к файлу конфигурации OpenSSL, который находится в папке «conf» поставляемого пакета с веб-сервером.
Для генерации запроса нужно набрать с клавиатуры ответы на задаваемые вопросы о принадлежности и реквизитах сервера. На этом этапе важно иметь в виду, что для ввода в поле данных пустого значения нужно ввести » . » (точку). Если вместо этого просто нажать клавишу [Enter], то будет принято значение по умолчанию, которое указано в квадратных скобках. А сами данные следующие:
County name — двухзначный буквенный код страны;
State or Province Name — название региона, области, района;
Locality Name — название населённого пункта;
Organization Name — название организации;
Organizational Unit Name — название подразделения;
Common Name — доменное имя сервера;
Email Address — контактный адрес электронной почты;
A challenge password — кодовое слово;
An optional company name — дополнительное название организации;
Значения последних двух полей вводить не обязательно. Самое главное — правильно указать доменное имя сервера, потому что именно по этому реквизиру веб-браузеры будут проверять подлинность веб-сервера.
В результате выполнения этой команды будет сформирован файл «server.csr», содержащий необходимую для выдачи сертификата информацию. Этот файл можно отправлять в удостоверяющий центр, после чего ожидать от него ответа.
Но для локального тестирования сайта или внутреннего использования в корпоративной интрасети можно подписать сертификат секретным ключом самого веб-сервера, а не удостоверяющего центра, получив так называемый «самоподписанный» сертификат. Делается это с помощью команды:
openssl.exe x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Сертификат сроком на 365 дней, подписанный секретным ключом сервера «server.key» в ответ на запрос «server.csr», помещается в файл «server.crt».
Настройка веб-сервера
В результате выполнения описанных выше действий в папке «D:\www\conf\ssl» имеются необходимые для работы протокола HTTPS файлы:
server.key — секретный ключ веб-сервера;
server.crt — сертификат веб-сервера.
За обслуживание протокола SSL/TLS отвечает модуль «mod_ssl», который вместе с модулем кеширования и соответствующим файлом настроек нужно подключить к веб-серверу с помощью следующих изменений главного конфигурационного файла «D:\www\conf\httpd.conf»:
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so
LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
Include $
Если веб-сервер установлен в соответствии с описанной ранее методикой, то в конфигурационном файле «D:\www\conf\extra\httpd-ssl.conf» нужно все вхождения «$
#SSLCertificateFile «$
SSLCertificateFile «$
#SSLCertificateKeyFile «$
SSLCertificateKeyFile «$
В том же файле нужно указать правильные имя сервера и контактный адрес электронной почты. Эти реквизиты должны совпадать с теми, которые были введены при формировании запроса на сертификат. Например, для локального сервера доменное имя будет «localhost», а адрес электронной почты — «webmaster@localhost»:
#ServerName www.example.com:443
ServerName localhost:443
#ServerAdmin admin@example.com
ServerAdmin webmaster@localhost
Если после выполненных настроек в адресной строке браузера набрать «https://localhost/», то при использовании самоподписанного сертификата отобразится строгое предупреждение:
Рис. Отключение системы защиты веб-браузера от доступа к сайтам с недостоверными сертификатами.
Для «обхода» защиты нужно последовательно нажать кнопки «Подробности» и «Сделать исключение для данного сайта», после чего на экране отобразится страница, полученная с сервера по протоколу HTTPS.
В решении проблем, возникающих при настройке доступа к серверу по протоколу HTTPS, может помочь команда, устанавливающая защищённое протоколом SSL/TLS соединение с веб-сервером:
openssl.exe s_client -connect localhost:443 -state -debug
При её выполнении на экран будут выведены сведения о процедуре согласования параметров безопасного канала передачи данных и этапах его установления. Если канал будет успешно установлен, то можно вводить консольные команды по протоколу HTTP. Например, для получения главной страницы сайта нужно набрать:
Ввод команды нужно завершить двумя нажатиями клавиши [Enter]. В ответ на экран будут выведены:
- отправленные на сервер зашифрованные данные;
- зашифрованные данные, полученные от сервера;
- расшифрованный ответ сервера.
Литература:
Публичное использование материалов сайта допускается только при условии прямой гиперссылки на этот интернет-ресурс.
Настройка веб-сервера Apache под Windows
План работ:
- Установка Apache под Windows.
- Выпуск самоподписанного сертификата Windows (Необязательно).
- Генерация сертификата.
- Публикация информационной базы Windows.
- Проверка публикации.
В отличие от IIS, веб-серверApaсhe доступен как для Windows, так и для Linux и позволяет настроить работу публикаций по шифрованному протоколу http.
1. Установка Apache под Windows
Первым делом необходимо скачать и установить веб-сервер. Список доступных реализаций можно найти по ссылке, а в статье будет использован самый первый из списка дистрибутивов. Он поставляется в виде zip-архива без инсталлятора.
Поэтому нужно скачать архив и разархивировать в любую удобную папку, например, C:\Apache24. 24. В названии папки указан номер версии Apache. В данном случае используется версия 2.4. При публикации информационной базы из командной строки стоит обращать на это внимание, так как с платформой поставляются отдельные библиотеки веб-компонент для версий Apache 2.2 и 2.4.
После разархивирования файла архива, откройте командую строку от имени администратора. Самый простой вариант – это открыть меню Пуск и ввести cmd. После того, как приложение будет найдено щелкнуть по нему правой кнопкой мыши и выбрать пункт меню «Запустить от имени Администратора» («Run as Administrator»).
В командной строке переходим в директорию распакованного Apache с помощью команды cd. Например:
В директории Apache вводим команду:
Это установит службу Apache, которой можно будет управлять в окне служб.
На этом установка Apache закончена. Осталось только опубликовать информационную базу и указать файлы сертификата в настройках Apache.
2. Выпуск самоподписанного сертификата Windows
В отличии от IIS, сертификат для Apache выпускается с помощью стороннего программного обеспечения OpenSSL.
По умолчанию в операционной системе Windows его нет. Поэтому его нужно скачать и установить самостоятельно. Возможные дистрибутивы OpenSSL для Windows указаны на wiki странице официального сайта.
В статье рассматривается дистрибутив по ссылке, который указан первым на странице wiki.
После скачивания дистрибутива установки необходимо его запустить.
На первой странице нужно согласиться с условиями лицензионного соглашения (переключить переключатель на «I accept the agreement») и нажать кнопку «Next».
Мастер переключится на страницу размещения дистрибутива. Если местоположение не планируется изменять, то можно оставить поле в значении по умолчанию и нажать кнопку «Next».
На следующем шаге ничего менять не нужно и можно просто нажать «Next».
Дистрибутив готов к установке. Нужно нажимать кнопку «Install» и дождаться завершения установки.
Финальный шаг – это страница пожертвований в пользу поддержки проекта. Если в планы не входит перечисление пожертвований, то необходимо снять все флажки и нажать кнопку Finish.
Дистрибутив OpenSSL установлен и теперь можно переходить к генерации сертификата.
Для этого необходимо запустить интерпретатор командной строки от имени Администратора.
Теперь нужно проверить, что исполняемый файл доступен из переменных окружения операционной системы. Нужно ввести openssl и если будет выведено сообщение, аналогичному на картинке, то воспользуйтесь инструкцией по добавлению директории bin в переменную окружения PATH.
Директория bin для OpenSSL была указана на втором шаге установщика.
Если пришлось добавить директорию bin в переменные окружения, то необходимо перезапустить командную строку от имени администратора. В противном случае, если ввод перешел в режим конфигурирования OpenSSL, нужно нажать сочетание клавиш Ctrl + C.
Далее нужно перейти в директорию Apache и создать папку, в которой будут располагаться файлы сертификатов.
После создания нужно перейти в созданную директорию.
После чего требуется ввести команду генерации сертификата, где вместо нужно подставить имя компьютера, на котором планируется размещен Apache:
Во время выполнения команды будет задано несколько вопросов. Для «Common Name (e.g. server FQDN or Your bane)» нужно также указать имя сервера. Остальные поля заполняются произвольно (кроме «Country name» — здесь можно оставить по умолчанию).
3. Публикация информационной базы Windows
Перед публикацией базы нужно отредактировать в любом удобном редакторе файл, расположенный в директории дистрибутива Apache.
Нужно в файле найти секцию VirtualHost _default_:443 и в ней заменить SSLCertificateFile и SSLCertificateKeyFile на полные пути к ключу и закрытого файла сертификата, на подготовленные заранее файлы.
После этого можно переходить к публикации базы.
Для публикации информационной базы нужно открыть конфигуратор конкретной базы от имени администратора и перейти в пункт меню «Администрирование». После этого выбрать «Публикация информационной базы».
В окне публикации указать имя публикации и по желанию определить каталог, где будут находиться настройки публикации. Его также можно оставить по умолчанию.
После этого требуется нажать кнопку «Опубликовать» и дождаться окончания операции.
4. Проверка публикации
Для проверки корректной работы нужно открыть страницу в браузере и перейти по ссылке, которая состоит из двух частей:
- Имя вашего сервера (например, server1)
- Имя публикации базы (которое было указано в окне настройки публикации)
Для таких параметров ссылка будет иметь вид: