Home » Linux » CentOS » Настройка ssl в apache на CentOS

Настройка ssl в apache на CentOS

Хочу поделиться небольшой информацией о том, как настроить ssl подключение в apache на сервере с CentOS и перевести сайты с http на https. Делается это не сложно, но есть пара нюансов.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужно пройти .

Недавно я уже рассказывал о том как получить бесплатный ssl сертификат для подтверждения доменного имени. Мы его использовали для организации ssl/tls соединений в почтовом сервере. Теперь его же мы будем использовать для того, чтобы перевести наш сайт на работу по ssl протоколу.

Установка mod_ssl в apache

В качестве сервера у нас выступает apache на CentOS, хотя это не принципиально, настройка на других linux дистрибутивах будет идентичной. Рабочим web сервером является apache. Использовать ssl протокол в apache мы будем с помощью мода mod_ssl. Первым делом проверим, установлен ли он:

# rpm -qa | grep mod_ssl

Если нет, то устанавливаем:

# yum -y install mod_ssl

После установки мода, идем в директорию /etc/httpd/conf.d и правим там файл настроек ssl.conf. Прописываем пути к сертификатами в директивах SSLCertificateFile и SSLCertificateKeyFile.

Создание виртуального хоста с поддержкой ssl

Далее необходимо либо создать новый виртуальный хост apache, либо отредактировать существующий в файле /etc/httpd/conf/httpd.conf. Добавляем в конец файла:

<VirtualHost *:443>
 SSLEngine on
 SSLCertificateFile /root/cert/zeroxzed.ru.crt
 SSLCertificateKeyFile /root/cert/zeroxzed.ru.kye
 <Directory /var/www/vhosts/zeroxzed.ru/www>
 AllowOverride All
 </Directory>
 DocumentRoot /var/www/vhosts/zeroxzed.ru/www
 ServerName zeroxzed.ru
 </VirtualHost>

После сохранения проверяем конфигурацию apache:

# httpd -t

Если появляется предупреждение:

[warn] _default_ VirtualHost overlap on port 443, the first has precedence

То ищем в /etc/httpd/conf/httpd.conf строчку NameVirtualHost *:80 и добавляем после нее NameVirtualHost *:443

Снова проверяем. Если ошибок нет, перезапускаем апач и заходим на сайт, прописав в адресной строке https, вместо http. Теперь ваш сайт доступен по протоколу https. Но пользователи сайта могут об этом не знать. Было бы разумным сделать переадресацию с открытого протокола на защищенный. Сделаем это.

Переадресация с http на https

Для того, чтобы сделать автоматическую переадресацию с http на https, необходимо в описании виртуального хоста в httpd.conf добавить порт 80 вместе с 443:

<VirtualHost *:80 *:443>

И в корне сайта с помощью .htaccess и mod_rewrite делаем перенаправление всех запросов с http на https:

# cat .htaccess
RewriteEngine On
 RewriteCond %{HTTPS} off
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

Теперь даже если просто набрать адрес сайта с http откроется его защищенная версия https. Не забудьте проверить, включен ли у вас модуль mod_rewrite в настройках apache. И проверьте фаервол. Для корректной работы сайта по протоколу https необходимо открыть 443 порт на веб сервере.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:
  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

11 комментариев

  1. Аватар

    День добрый!
    Прекрасно зашли ваши установка CentOS и LAMP, а вот тут ну никак. Вероятно, я чего-то недопонимаю. Хочу мигрировать с Ubuntu на CentOS с имеющимися сайтами и сертификатами.
    Можно как-то по-подробнее, с нюансами?

    • Zerox

      А в чем проблема? Тут фактически надо только указать сертификат в конфиге и все. Нюансов нет.

      • Аватар

        Да, действительно. Ложная тревога. На второй день нашел пару своих ошибок и одно небольшое недопонимание. Всё ок. Спасибо за Ваши статьи.

  2. Аватар

    Стиль изложения — 5 баллов! Четко и по существу. Спасибо.

  3. Аватар

    А как на Zabbix 4 с Centos 7 сделать https? Можете расписать подробно пожалуйста

    • Zerox

      Так же как и везде в апаче. Заббикс никаких нюансов не приносит — это обычный сайт на php.

    • Аватар

      1. Ставим ссльный мод: yum install mod_ssl
      2. Создаем дериктории под ключи: mkdir -p /etc/httpd/ssl/private
      chmod 700 /etc/httpd/ssl/private
      3. Создаем сертификат: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/private/apache-selfsigned.key -out /etc/httpd/ssl/apache-selfsigned.crt Далее проходим простенький мастер создания сертификата
      4. Отредактировать апачевский конф файл ссл: /etc/httpd/conf.d/ssl.conf Строки: DocumentRoot «/usr/share/zabbix»
      ServerName example.com:443
      SSLCertificateFile /etc/httpd/ssl/apache-selfsigned.crt
      SSLCertificateKeyFile /etc/httpd/ssl/private/apache-selfsigned.key
      5. systemctl restart httpd.service
      6. Далее редактируем httpd.conf
      ServerName zbx
      DocumentRoot /usr/share/zabbix/
      Redirect permanent /secure https://zbx

      SSLEngine on
      SSLCertificateFile /etc/httpd/ssl/apache-selfsigned.crt
      SSLCertificateKeyFile /etc/httpd/ssl/private/apache-selfsigned.key
      ServerName zbx
      DocumentRoot /usr/share/zabbix/

      7. systemctl restart httpd.service
      Теперь заббикс должен открывается по https и редиректит обращения на http туда же.

    • Аватар

      to Jhony коммент выше

  4. Аватар

    ssl.conf покажите чем должен быть заполнен этот файл в виде примера

  5. Аватар

    Спасибо! Доходчиво написано. Сэкономил на сертификате.

Добавить комментарий

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.