Секретные записки WEB-программиста




100mbru, bitrix, CentOS, cms, drupal, java, joomla, LAMP, linux, mysql, nicru, Open-Source, php, Red Hat, seo, Typo3, ubuntu, win, windows, авто, администрирование, алгоритмы, алкоголь, бизнес, битрикс, видео, военмех, выборы, германия, джино, домены, интересности, исследования, картинки, кино, компьютеры, ливия, магазин, маразм, мастерхост, обработка-изображений, пейнтбол, политика, политэкономия, прикольное-видео, программирование, путешествия, работа, религия, рунет, сайтостроение, сео, сми, технологии, украина, форум, хиханьки, холивары, хостинг

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

25.12.2015

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

 
  sudo  a2enmod ssl 

Настроим виртуальные хосты. Если же на сервере один хост, то можно ковыряться в одном файле - default-ssl. Но всё же будем считать, что хостов на сервере больше, чем один. Добавим отсутствующую по умолчанию (в убунте, за других не скажу) директиву NameVirtualHost для 443 порта. В Ubuntu это можно проделать в файле /etc/apache2/ports.conf

 
 < IfModule mod_ssl.c> 
 NameVirtualHost *:443 
 Listen 443
 < /IfModule>

Настраиваем виртуальный хост, запрещая при этом устаревший криптографический протокол SSLv2 и организуя перенаправление, если кто-то придёт на сайт по протоколу HTTP ( mod_rewrite должен быть включён). Примерно таким образом:

 
  <  IfModule  mod_ssl.c> 

< VirtualHost *:443>

ServerName dbadmin.example.org
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile "/etc/apache2/ssl/dbadmin.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/server.key"
DocumentRoot "/srv/www/dbadmin.example.org/httpsdocs"
< Directory "/srv/www/dbadmin.example.org/httpsdocs">
AllowOverride All
Directory >

VirtualHost >

  <  /IfModule  > 
< VirtualHost *:80>
ServerName dbadmin.example.org
Redirect permanent / https://dbadmin.example.org
  <  VirtualHost  > 

Перезагружаем апач и радуемся. Если радость не наступила, то ищем где была допущена ошибка :)

UPD: Если нужно при этом организовать правильный редирект со старых урлов на новые, т.е. с http на соответствующие https , то немного изменим настройки виртуального хоста:

 
  <  VirtualHost  *:80> 
    ServerName example.org 
    ServerAlias www.example.org 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^(www.)?example.org$ [NC] 
    RewriteRule (.*) https://example.org%{REQUEST_URI} 
   < /VirtualHost  >