настройка ssl apache windows
Настройка Apache + SSL для работы сайта по HTTPS
Инструкция написана для операционных систем на базе UNIX.
Шаг 1. Создание сертификата
Для боевого сервера, сертификат должен быть получен от доверенного центра сертификации — либо локального для компании, либо коммерческого. Или получен бесплатно от Let’s Ecnrypt.
Для тестовой среды можно сгенерировать самоподписанный сертификат. Для этого сперва переходим в рабочую папку.
а) на Red Hat / CentOS:
б) на Debian / Ubuntu:
Создаем папку для сертификатов и переходим в нее:
И генерируем сертификат:
* в данном примере созданы открытый и закрытый ключи на 4 года (1461 день); значения параметра subj могут быть любыми в рамках тестирования.
Шаг 2. Установка модуля SSL для Apache
Прежде, чем устанавливать модуль, выполняем команду:
Если видим строчку, на подобие:
Спускаемся к шагу 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 для настраиваемого сайта, необходимо его закомментировать или отредактировать.
Установка модуля 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», происходит следующее:
При установке HTTPS-соединения веб-браузеры проверяют подлинность сервера с использованием сертификата, выданного ему удостоверяющим центром. Сертификат — это подписанные секретным ключом удостоверяющего центра открытый ключ веб-сервера и информация о сервере. Если сертификат недействителен или данные, указанные в сертификате, не совпадают с реквизитами сервера, пользователю будет выдано предупреждение с рекомендацией отказаться от работы с этим сервером.
Чтобы с веб-сервером Apache можно было взаимодействовать по протоколу 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 ввести команду:
В этой команде «server.key» — это имя файла, в который будет записан секретный ключ, а «2048» — длина ключа в битах. Файл «server.key» содержит конфиденциальную информацию, поэтому нужно принять меры по его защите, чтобы предотвратить компрометацию сервера.
Открытый ключ сервера может быть извлечён из секретного ключа и выгружен в файл «server.pub» командой:
Однако для настройки HTTPS-сервера в явном виде открытый ключ нигде не требуется.
Получение сертификата
Чтобы получить сертификат веб-сервера, нужно на основе криптографических ключей составить запрос в удостоверяющий центр на выдачу сертификата. Формирование запроса производится командой:
В параметре «-config» указан путь к файлу конфигурации OpenSSL, который находится в папке «conf» поставляемого пакета с веб-сервером.
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», содержащий необходимую для выдачи сертификата информацию. Этот файл можно отправлять в удостоверяющий центр, после чего ожидать от него ответа.
Но для локального тестирования сайта или внутреннего использования в корпоративной интрасети можно подписать сертификат секретным ключом самого веб-сервера, а не удостоверяющего центра, получив так называемый «самоподписанный» сертификат. Делается это с помощью команды:
Сертификат сроком на 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
Если веб-сервер установлен в соответствии с описанной ранее методикой, то в конфигурационном файле «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 соединение с веб-сервером:
При её выполнении на экран будут выведены сведения о процедуре согласования параметров безопасного канала передачи данных и этапах его установления. Если канал будет успешно установлен, то можно вводить консольные команды по протоколу HTTP. Например, для получения главной страницы сайта нужно набрать:
Ввод команды нужно завершить двумя нажатиями клавиши [Enter]. В ответ на экран будут выведены:
Литература:
Публичное использование материалов сайта допускается только при условии прямой гиперссылки на этот интернет-ресурс.
Настройка HTTPS в Apache на Windows 8.1
Автор: genadie от 4-02-2014, 20:41, посмотрело: 61163
Под строкой Listen 172.16.1.3:80
Находим и раскоментируем строчку:
Далее идем в конец фала и видим там блок:
Приводим его к следующему виду:
Сохраните изменения и закройте файл «httpd.conf»
Теперь откройте файл «C:\server\Apache24\conf\extra\httpd-vhosts.conf» и произведите в нем следующие изменения:
Коментируем созданный нами в прошлой статье блок:
И вставляем следующее:
Так же добавим блок для перенаправления, если кто-то придёт на сайт по протоколу HTTP:
В итоге должно получится как-то так:
ServerName local.malwselennaia.ru
Redirect permanent / https://local.malwselennaia.ru
#
# DocumentRoot «C:/sait/local.malwselennaia.ru/www»
# ServerName local.malwselennaia.ru
# ErrorLog «C:/sait/local.malwselennaia.ru/error.log»
# CustomLog «C:/sait/local.malwselennaia.ru/access.log» common
#
SSLEngine On
SSLCertificateFile conf/ssl/my-server.cert
SSLCertificateKeyFile conf/ssl/my-server.key
DocumentRoot «C:/sait/local.malwselennaia.ru/www»
ServerName local.malwselennaia.ru
ErrorLog «C:/sait/local.malwselennaia.ru/error.log»
CustomLog «C:/sait/local.malwselennaia.ru/access.log» common
Сохраните изменения и закройте файл «httpd-vhosts.conf»
В данном примере «local.malwselennaia.ru»- имя моего сайта, у себя вставляете свои данные.
DocumentRoot «C:/sait/local.malwselennaia.ru/www»- директория, в которой находится скрипт сайта.
ServerName local.malwselennaia.ru- имя, которое вводим в браузере.
SSLCertificateFile conf/ssl/my-server.cert
SSLCertificateKeyFile conf/ssl/my-server.key-директория, где лежит сертификат.
Создаем сертификат для нашего сервера.
Для этого заходим в каталог C:\server\Apache24\bin и открываем командную строку от имени администратора.
Теперь вводим следующее:
Видим ответ с предложением ввести пароль:
Вводим свой пароль и видим предложение ввести пароль еще раз:
Теперь необходимо ввести название страны (2 буквы кода):
Далее нужно ввести Штат или Провинция (необязательный параметр, я оставлю пустым):
Теперь название местности (оставлю пусто):
Название организации (опять пропущу):
Название Подразделения (оставлю пусто):
Дошли до: «Common Name (e.g. server FQDN or YOUR name) []:» Сдесь нужно прописать свое доменное имя (название сайта, в моем случае это local.malwselennaia.ru):
Вводим почту админа:
Вводим необязательное название компании (оставлю пусто):
После этого в каталоге C:\server\Apache24\bin образуется файлик my-server.csr
Далее последовательно даем команды:
Видим ответ с предложением ввести пароль:
Вводим пароль, получаем ответ:
Вот собственно и все, проверяем результат:
Получаем вот такой ответ:
Жмем «продолжить открытие веб-сайта»:
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Настраиваем Apache для работы по HTTPS (SSL) с сертификатами Let’s Encrypt
Сегодня защищенное соединение перестало быть уделом сайтов, работающих с пользовательскими данными, а стало насущной необходимостью для всех, даже если у вас простой блог о личном увлечении. Большинство современных браузеров при заходе на простой HTTP-сайт уже указывают в адресной строке, что подключение не защищено, но в скором будущем начнут помечать такие сайты как небезопасные. Тем более что с приходом Let’s Encrypt шифрование стало доступно каждому и настроить его несложно, о чем мы и расскажем в данной статье.
Будем считать, что у нас уже настроен как минимум один виртуальный хост, на котором работает сайт, допустим, example.com, минимальная конфигурация виртуального хоста должна выглядеть примерно так:
Мы не будем подробно описывать значение опций, это сделано в указанной нами статье, а конфигурация приведена для примера, на который мы будем опираться в дальнейшем по ходу статьи.
Прежде всего нам потребуется настроить веб-сервер для работы с Let’s Encrypt, сделав так, чтобы сертификаты можно было легко получать для любого обслуживаемого сервером сайта без дополнительных настроек. Создадим для этого специальную директорию:
И сделаем ее владельцем веб сервер:
Затем создадим файл конфигурации для Аpache:
и внесем в него следующий текст:
Эта настройка будет перенаправлять все запросы к /.well-known/acme-challenge любого сайта в созданную нами директорию /var/www/letsencrypt.
Подключим конфигурационный файл:
и проверим конфигурацию на ошибки:
Затем перезапустим веб-сервер
Следующим шагом установим certbot, в современных дистрибутивах он включен в репозитории, поэтому достаточно выполнить:
Если вы используете более старые дистрибутивы, то обратитесь к нашей статье: Получаем сертификаты Let’s Encrypt при помощи Certbot
Пакет не требует начальной настройки и готов к работе сразу после установки. Перед тем, как получать сертификат, убедитесь, что к вашему серверу есть доступ из интернета. В любом случае советуем сначала выполнить пробное получение:
За тестовый режим отвечает ключ —dry-run, ключ —webroot указывает используемый плагин, в нашем случае отвечающий за работу с уже имеющемся веб-сервером. Опция -w указывает корневую директорию для Let’s Encrypt, которую мы создали и настроили ранее, а через ключи -d перечисляются домены и поддомены, для которых требуется получить сертификат. Если все прошло успешно вы получите лаконичное сообщение:
После того, как тест прошел успешно можно выполнить настоящее получение сертификатов, для этого просто уберите ключ —dry-run из команды.
Теперь вы получите более информативное сообщение, содержащее информацию о расположении полученных сертификатов и сроков их действия:
Все полученные сертификаты, точнее символические ссылки на них, хранятся в /etc/letsencrypt/live в директориях с именами доменов. Настройки продления можно найти в /etc/letsencrypt/renewal, откроем настройку нашего домена /etc/letsencrypt/renewal/example.com.conf и внесем в секцию [renewalparams] следующую опцию:
Порядок расположения опций значения не имеет. Параметр renew_hook позволяет указать действие, которое следует выполнить при успешном продлении сертификата, в нашем случае это перезапуск веб-сервера Apache.
Сертификат получен, можно переходить к настройке виртуального хоста для работы сайта по защищенному протоколу, рекомендуем скопировать текущий файл конфигурации и вносить настройки в него:
Затем откроем его и сразу изменим порт с 80 на 443:
Также советуем изменить имена файлов логов:
Эти опции включают SSL и указывают пути к сертификатам. В теории этого достаточно, но в современных условиях такие настройки не будут надежными, так как разрешают использование устаревших протоколов и нестойких шифров. Для получения современной и актуальной конфигурации SSL мы советуем воспользоваться сервисом moz://a SSL Configuration Generator, который предлагает несколько вариантов настроек, оптимальным является использование опции Intermediate.
Но не следует добавлять сразу все опции, ряд из них могут иметь достаточно «неожиданное» действие на неподготовленного пользователя. Поэтому сначала разберемся с шифрами и протоколами:
Также разрешим использование протокола HTTP/2, если это возможно:
Сохраним файл конфигурации и подключим его:
Также нам потребуется модуль SSL:
Проверим конфигурацию и перезапустим веб-сервер:
После чего откройте сайт, явно указав протокол https://example.com
На этом этапе вы можете столкнуться с проблемой смешанного содержимого, когда определенные ресурсы сайта, например, изображения или скрипты загружаются по незащищенному протоколу HTTP. Если к первым браузеры относятся относительно лояльно, просто убирая «замочек» в адресной строке, то вторые по умолчанию блокируются. Поэтому внимательно изучите код вашего сайта и замените везде, где это возможно, получение ресурсов на защищенный протокол HTTPS. Если это невозможно, то от таких ресурсов следует отказаться.
Добившись идеальной работы сайта по HTTPS, двинемся дальше, сначала включим технологию HSTS, которая принудительно активирует защищенное соединение, если сайт хоть один раз был успешно через него загружен. При использовании данного механизма браузер будет принудительно переключаться на HTTPS даже если в строке подключения пользователь явно укажет протокол HTTP, это позволяет успешно бороться с атаками на понижение степени защиты.
Для этого добавим в конфигурацию виртуального хоста строку:
Также включим механизм OCSP Stapling, который позволяет ускорить проверку сертификата клиентом, что особенно важно для мобильных пользователей. Добавим строку:
Однако этого недостаточно, сохраним настройки виртуального хоста и снова откроем файл /etc/apache2/conf-available/le.conf, куда добавим:
Для работы вышеперечисленных опций нам потребуется модуль Headers:
Снова проверяем конфигурацию и перезапускаем сервер:
Самое время проверить HSTS в действии: перейдите на сайт по защищенному протоколу, а затем попробуйте открыть его HTTP версию, если HSTS работает, то у вас это не получится.
И в завершение настроим перенаправление клиентов с HTTP версии сайта на HTTPS, для этого откроем настройки виртуального хоста HTTP версии /etc/apache2/sites-available/example.com.conf и удалим из него все строки кроме:
Сохраним файл конфигурации и подключим модуль Rewrite:
И еще раз перезапустим сервер, не забыв проверить конфигурацию:
Теперь наш сервер настроен с учетом всех современных методик, проверить это можно на сайте SSL Labs, с текущими настройками была получена высшая оценка A+:
Как видим, настроить веб-сервер Apache для работы по HTTPS совсем несложно. А Let’s Encrypt обеспечит бесплатное получение и обновление сертификатов в автоматическом режиме. Если вы заметили, то мы ничего не писали про настройку автообновления, Certbot все уже сделал за нас.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: