Настройка openssl apache windows

Настройка 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 % off
RewriteRule (.*) https://%% [R=301,L]

* в конкретном примере, мы перенаправили все запросы для сайта 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.

Читайте также:  Linux список команд вывод

Как настроить Apache для работы по HTTPS (SSL)

Настройка HTTPS для Apache 2.4 под Windows

Два слова о протоколе HTTPS

HTTPS — это протокол обмена данными, который полностью описывается фразой «HTTP поверх SSL/TLS». Когда пользователь набирает в браузере адрес сайта, например, «https://www.site.com/info.html», происходит следующее:

  1. Веб-браузер посредством DNS-запроса определяет IP-адреса сервера «www.site.com». Если не используется технология DNSCrypt, этот запрос происходит в открытом виде, без шифрования.
  2. Между веб-браузером и веб-сервером устанавливается защищённый канал передачи данных SSL/TLS.
  3. По защищённому каналу осуществляется обмен между веб-браузером и веб-сервером по протоколу HTTP.

При установке HTTPS-соединения веб-браузеры проверяют подлинность сервера с использованием сертификата, выданного ему удостоверяющим центром. Сертификат — это подписанные секретным ключом удостоверяющего центра открытый ключ веб-сервера и информация о сервере. Если сертификат недействителен или данные, указанные в сертификате, не совпадают с реквизитами сервера, пользователю будет выдано предупреждение с рекомендацией отказаться от работы с этим сервером.

Чтобы с веб-сервером Apache можно было взаимодействовать по протоколу HTTPS, понадобится:

  1. Сгенерировать криптографические ключи веб-сервера.
  2. Получить сертификат веб-сервера.
  3. Настроить веб-сервер на работу по протоколу 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 — дополнительное название организации;

Значения последних двух полей вводить не обязательно. Самое главное — правильно указать доменное имя сервера, потому что именно по этому реквизиру веб-браузеры будут проверять подлинность веб-сервера.

Читайте также:  Raw to jpg mac os

В результате выполнения этой команды будет сформирован файл «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 $/conf/extra/httpd-ssl.conf

Если веб-сервер установлен в соответствии с описанной ранее методикой, то в конфигурационном файле «D:\www\conf\extra\httpd-ssl.conf» нужно все вхождения «$» заменить на «$«. Кроме того, нужно в этом же файле исправить пути к секретному ключу и сертификату веб-сервера:

#SSLCertificateFile «$/conf/server.crt»
SSLCertificateFile «$/conf/ssl/server.crt»

#SSLCertificateKeyFile «$/conf/server.key»
SSLCertificateKeyFile «$/conf/ssl/server.key»

В том же файле нужно указать правильные имя сервера и контактный адрес электронной почты. Эти реквизиты должны совпадать с теми, которые были введены при формировании запроса на сертификат. Например, для локального сервера доменное имя будет «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


План работ:


  1. Установка Apache под Windows.
  2. Выпуск самоподписанного сертификата Windows (Необязательно).
  3. Генерация сертификата.
  4. Публикация информационной базы Windows.
  5. Проверка публикации.

В отличие от 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)
  • Имя публикации базы (которое было указано в окне настройки публикации)

Для таких параметров ссылка будет иметь вид:

Читайте также:  Не отображается сетевой диск windows 10
Оцените статью