Apache ssl настройка linux

Содержание
  1. 📑 Настройка HTTPS в Apache
  2. Настройка Apache + SSL для работы сайта по HTTPS
  3. Шаг 1. Создание сертификата
  4. Шаг 2. Установка модуля SSL для Apache
  5. Шаг 3. Настройка Apache
  6. Шаг 4. Проверка работоспособности
  7. Шаг 5. Настройка редиректа
  8. В конфигурационном файле
  9. В файле .htaccess
  10. Установка модуля rewrite
  11. Apache + NGINX
  12. Настройка HTTPS в Apache
  13. Содержание
  14. Создание ключа и ssl-сертификата
  15. Настройка Apache
  16. Перенаправление HTTP запросов на HTTPS
  17. Apache HTTP Server (Русский)
  18. Contents
  19. Установка
  20. Настройка
  21. Дополнительные опции
  22. Пользовательские каталоги
  23. TLS/SSL
  24. Виртуальные хосты
  25. Управление большим количеством виртуальных хостов
  26. Расширения
  27. Дополнительные параметры
  28. Использование php5 c php-fpm и mod_proxy_fcgi
  29. Использование php5 c apache2-mpm-worker и mod_fcgid
  30. MySQL/MariaDB
  31. Решение проблем
  32. Просмотр журнала и текущего состояния Apache
  33. PID file /run/httpd/httpd.pid not readable (yet?) after start
  34. Обновление с Apache 2.2 до 2.4
  35. Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe

📑 Настройка HTTPS в Apache

Незащищённое http — соединение опасно тем, что существует возможность прослушивания трафика и соответственно паролей, отсылаемых на сайты вместе с логинами по POST или GET.

Использование сертификатов защищает от пассивного прослушивания и, если сертификат подписан компанией-центром сертификации (Certificate authority или CA) , гарантирует клиентам, что сервер является именно тем сервером, который им нужен.То-есть сертификат, подписанный CA, предоставляет два важных свойства в отличие от самоподписанного сертификата:

  1. Браузеры (обычно) автоматически распознают такой сертификат и позволяют устанавливать защищенные соединения без предупреждения пользователя.
  2. Когда CA выпускает подписанный сертификат, он гарантирует идентичность организации, которая предоставляет интернет страницы браузеру.

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

Для начала, если не установлен, необходимо установить openssl:

Для создания ключа и сертификата вводим команду:

Этой командой генерируется ключ без пароля (passphrase), чтобы Apache не мучил запросам пароля при каждом перезапуске.

На вопрос «Common Name (e.g. server FQDN or YOUR name) []:» необходимо ввести имя сайта, для которого создается сертификат, например www.example.com.

Для начала необходимо активировать mod_ssl:

а затем включить настройки HTTPS сайта по умолчанию:

Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к сертификатам.
Сам файл называется

В этом файле рекомендуется после директивы

чтобы запретить использование устаревшего протокола SSLv2.

Дальше необходимо отредактировать параметры, ответственные за сертификаты.

Перезагрузить Apache:

И если все параметры указаны верно, сайт станет доступнен по HTTPS.

Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.

Источник

Настройка 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 — конфигурационный файл для конкретного сайта

В открытый файл добавляем следующее:

Читайте также:  Kali linux windows 10 что это

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.

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

Источник

Настройка HTTPS в Apache

Содержание

Веб-сервер Apache полностью поддерживает работу по HTTPS. Для того, чтобы активировать поддержку HTTPS на уже установленном Apache необходимо выполнить следующее.

Создание ключа и ssl-сертификата

Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преймуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанных компанией-сертификатором (Certificate authority) стоит денег.

Для создания ключа и сертификата вводим команду:

На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем. На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) []:» отвечаем именем сайта, для которого создаем сертификат, например www.example.com.

После ответа на все вопросы в директории должны появиться два новых файла — server.pem и server.crt (ключ и сертификат, соответственно).

Чтобы использовать сгенерированный ключ нужно знать пароль введенный нами, и Apache будет спрашивать его у нас при загрузке, а к чему нам лишние вопросы от демонов? 🙂 Поэтому снимаем пароль с ключа:

Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:

Настройка Apache

Для начала необходимо активировать mod_ssl :

А затем включить настройки HTTPS сайта по умолчанию:

Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к вашим сертификатам. Сам файл называется /etc/apache2/sites-enabled/default-ssl (или /etc/apache2/sites-enabled/default-ssl.conf ).

В этом файле рекомендуется после директивы

дабы запретить использование устаревшего протокола SSLv2.

Дальше вам необходимо отредактировать параметры, ответственные за сертификаты.

Теперь просто перезагрузите Apache:

И если все параметры указаны верно, ваши сайты станут доступны по HTTPS.

Перенаправление HTTP запросов на HTTPS

Затем изменяем файл /etc/apache2/sites-enabled/000-default , отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл добавляем директиву

При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.

Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.

Источник

Apache HTTP Server (Русский)

Перевод этой статьи или раздела не отражает оригинальное содержание.

Apache HTTP Server, или сокращенно Apache — популярный веб-сервер, разработанный Apache Software Foundation.

Apache часто используется вместе с языком сценариев PHP и СУБД MySQL. Такую комбинацию обычно называют LAMP (Linux, Apache, MySQL, PHP). Эта статья объясняет, как настроить Apache и как интегрировать с ним PHP и MySQL.

Читайте также:  Настройка сети windows media

Если вам нужно быстро создать окружение для разработки и тестирования, то можете просто установить Xampp.

Contents

Установка

Настройка

Файлы настроек Apache находятся в /etc/httpd/conf . Основным файлом является /etc/httpd/conf/httpd.conf , который может по ссылкам включать в себя дополнительные файлы с настройками. В большинстве случаев будет достаточно стандартных настроек из этого файла. По умолчанию корневым каталогом веб-сервера является /srv/http .

Для старта Apache запустите службу httpd.service .

После этих действий Apache должен запуститься. Проверьте работает ли он, набрав в адресной строке браузера http://localhost/ . Веб-сервер должен отправить вам простую тестовую страничку.

При необходимости дальнейшей настройки сервера смотрите следующие разделы.

Дополнительные опции

Следующие опции (директивы) в /etc/httpd/conf/httpd.conf могут быть вам интересны:

По соображениям безопасности при запуске сервера Apache от имени суперпользователя (напрямую или через скрипт инициализации) происходит смена идентификатора пользователя (UID), от имени которого выполняется процесс сервера. По умолчанию используется пользователь http , который не имеет привилегированных полномочий в системе. Это порт, через который Apache принимает входящие соединения. Если сервер имеет выход в интернет через маршрутизатор, необходимо будет настроить перенаправление этого порта. Если вы используете Apache для разработки и тестирования, вы можете разрешить только локальный доступ к нему. Для этого укажите Listen 127.0.0.1:80 . Адрес электронной почты администратора, который будет выводиться, например, на странице ошибки Apache. Это корневая директория Apache, в которой можно разместить ваши веб-страницы. Измените ее, если нужно, но не забудьте также поменять путь в директиве на новое расположение DocumentRoot , иначе вы, скорее всего, получите сообщение об ошибке 403 Error (недостаточно полномочий) при попытке получить доступ к новому корневому каталогу Apache. Также не забудьте изменить строку Require all denied на Require all granted , иначе снова получите ошибку 403 Error. Помните, что директория DocumentRoot и ее родительские папки должны иметь разрешения на запуск для всех (можно установить командой chmod o+x /path/to/DocumentRoot> ), в противном случае вы получите ошибку 403 Error. Запрещает переопределение настроек. Если в секции указана эта директива, Apache будет полностью игнорировать настройки в файле .htaccess . Обратите внимание, что теперь такая настройка для Apache 2.4 является настройкой по умолчанию, поэтому если вы планируете использовать .htaccess , вам необходимо дать соответствующие разрешения. Если вы собираетесь включить модуль mod_rewrite или использовать настройки в .htaccess , вы можете определить какие из директив, объявленных в этих файлах, могут перезаписывать конфигурацию сервера. Для получения дополнительной информации обратитесь к документации Apache.

Дополнительные настройки можно найти в /etc/httpd/conf/extra/httpd-default.conf .

Чтобы полностью отключить вывод версии Apache в генерируемых сервером страницах, добавьте:

Чтобы подавить вывод такой информации, как версии Apache и PHP, добавьте:

Пользовательские каталоги

По умолчанию доступ к каталогам пользователей возможен по адресу http://localhost/

»user»/ , который показывает содержимое каталога

/public_html (его имя и расположение задается в файле /etc/httpd/conf/extra/httpd-userdir.conf ).

Если вы не хотите, чтобы пользовательские каталоги были доступны через web, закомментируйте следующую строку в /etc/httpd/conf/httpd.conf :

Убедитесь, что права доступа к вашему домашнему каталогу и

/public_html позволяют получать доступ к файлам в них всем пользователям:

Однако с точки зрения безопасности вышеприведенное решение слишком фривольно. Правильнее поступить по-другому. Сначала добавьте пользователя http в группу, которой принадлежит ваша домашняя папка. Например, если ваша домашняя папка и все ее подкаталоги принадлежат группе piter, можно проделать следующее:

После этого назначьте права на чтение и исполнение для каталогов

/public_html и, рекурсивно, на остальные подкаталоги для

/public_html для членов группы (в нашем примере для членов группы piter). Опираясь на нижеприведенный шаблон, осуществите эти мероприятия:

Перезапустите службу httpd.service , чтобы изменения вступили в силу. Смотрите также Umask#Set the mask value.

TLS/SSL

Для использования TLS/SSL необходимо установить openssl .

Создайте закрытый ключ и запрос на получение сертификата (CSR). Также вы можете самозаверить CSR (который создаст сертификат):

Теперь раскомментируйте следующие строки в /etc/httpd/conf/httpd.conf :

Перезапустите службу httpd.service , чтобы изменения вступили в силу.

Виртуальные хосты

Если вы хотите, чтобы Apache обслуживал не один, а несколько хостов, раскомментируйте следующую строку в файле /etc/httpd/conf/httpd.conf :

Читайте также:  Значки графического интерфейса windows

Укажите свои виртуальные хосты в /etc/httpd/conf/extra/httpd-vhosts.conf . Файл уже содержит пример полностью рабочих настроек, что поможет вам быстро выполнить настройки под ваши нужды.

Для проверки виртуальных хостов на локальной машине добавьте их виртуальные имена в ваш файл /etc/hosts :

Перезапустите httpd.service , чтобы изменения вступили в силу.

Управление большим количеством виртуальных хостов

Если Apache используется для обслуживания очень большого количества виртуальных хостов, вам может быть полезна возможность их легко включать и отключать. Для этого рекомендуется создавать собственный файл настроек на каждый хост и хранить все эти файлы в одном каталоге, например /etc/httpd/conf/vhosts .

Сначала создайте каталог:

Теперь создайте в нем отдельные конфигурационные файлы:

И включите эти файлы в основной файл настроек /etc/httpd/conf/httpd.conf :

Теперь можно быстро включать/отключать требуемые виртуальные хосты, просто закомментировав или раскомментировав соответствующие директивы Include в основном файле настроек.

Очень простой файл виртуального хоста будет выглядеть следующим образом:

Расширения

Для использования mod_mpm_prefork , откройте /etc/httpd/conf/httpd.conf и поменяйте строку

Также вы можете просто использовать mod_proxy_fcgi (смотрите #Использование php7 c php-fpm и mod_proxy_fcgi [ссылка недействительна: раздел не найден] ).

Чтобы включить модуль PHP, добавьте следующие строки в /etc/httpd/conf/httpd.conf :

  • Поместите эту строку в любом месте после строки LoadModule dir_module modules/mod_dir.so :
  • Разместите эту строку в конце списка Include :

Если ваш корневой каталог DocumentRoot не /srv/http , добавьте его в список open_basedir в /etc/php/php.ini (необязательно):

Перезапустите службу httpd.service , чтобы изменения вступили в силу.

Чтобы убедиться в том, что PHP настроен корректно, создайте файл test.php в каталоге DocumentRoot (то есть в /srv/http/ или

/public_html ) и поместите в него следующий код:

По адресу http://localhost/test.php или http://localhost/»

пользователь»/test.php вы должны увидеть информационную страницу PHP.

Если PHP-код не исполняется, а на странице браузера вы увидите содержимое test.php , проверьте добавили ли вы Includes в строку Options для вашего корневого каталога в /etc/httpd/conf/httpd.conf . Кроме того, убедитесь, что TypesConfig conf/mime.types раскомментирован в секции . Также можно попробовать добавить нижеследующую строку в секцию файла httpd.conf :

Дополнительную информацию вы можете получить на странице PHP.

Дополнительные параметры

Рекомендуется правильно настроить вашу временную зону (список временных зон) в /etc/php/php.ini по примеру:

По желанию включите режим показа ошибок при отладке PHP-кода, для этого измените значение опции display_errors на On в файле /etc/php/php.ini :

Ежели вы хотите использовать модуль libGD , установите php-gd и раскомментируйте extension=gd.so в /etc/php/php.ini :

Для использования модуля mcrypt установите php-mcrypt AUR и раскомментируйте extension=mcrypt.so в /etc/php/php.ini :

Не забудьте добавить индексные файлы /etc/httpd/conf/extra/php7_module.conf , если это необходимо:

Для дополнительной настройки, пожалуйста прочтите PHP.

Использование php5 c php-fpm и mod_proxy_fcgi

  • Установитеphp-fpm
  • Задайте listen в /etc/php/php-fpm.conf следующим образом:
  • Добавьте следующие строки в /etc/httpd/conf/httpd.conf :
  • Если у вас добавлен модуль php, уберите его, так как он больше не нужен:
  • Перезапустите демон apache php-fpm:

Использование php5 c apache2-mpm-worker и mod_fcgid

  • Раскомментируйте следующую строку в /etc/conf.d/apache :
  • Раскомментируйте следующую строку в /etc/httpd/conf/httpd.conf :
  • Установите пакеты mod_fcgid и php-cgi , доступные в официальных репозиториях.
  • Создайте файл /etc/httpd/conf/extra/php5_fcgid.conf со следующим содержимым:
  • Создайте каталог и символическую ссылку в нем на php-cgi:
  • Отредактируйте /etc/httpd/conf/httpd.conf :

и перезапустите службу httpd.service .

MySQL/MariaDB

Следуйте инструкциям на странице PHP#MySQL/MariaDB.

После выполнения настройки, перезапустите службу mysqld , чтобы изменения вступили в силу.

Решение проблем

Просмотр журнала и текущего состояния Apache

Текущее состояние службы httpd вы можете вывести командой systemctl status httpd .

Лог-файлы Apache вы найдете в каталоге /var/log/httpd .

PID file /run/httpd/httpd.pid not readable (yet?) after start

Если вы получаете такую ошибку, закомментируйте строку:

в файле настроек Apache.

Обновление с Apache 2.2 до 2.4

Если вы используете php-apache , посмотрите инструкции к Apache с PHP выше.

Управление доступом было изменено. Приведите все директивы Order , Allow , Deny и Satisfy к новому синтаксису с Require . mod_access_compat позволит использовать устаревший формат на время этапа перехода.

Подробную информацию вы найдете на странице Upgrading to 2.4 from 2.2.

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe

Если не удалось запустить php5_module при старте httpd.service и вы получаете следующее сообщение об ошибке:

Это значит, что Apache работает c поточным MPM, но используется не потокобезопасная версия PHP. В этом случае, следует заменить mpm_event_module на mpm_prefork_module :

Источник

Оцените статью