Это старая версия документа.


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

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

sudo a2enmod ssl
sudo /etc/init.d/apache2 restart

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

sudo a2ensite default-ssl
sudo /etc/init.d/apache2 reload

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

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

SSLEngine on

добавить строчку

SSLProtocol all -SSLv2

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

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

# Публичный сертификат сервера
SSLCertificateFile    /etc/apache2/certs/youserver.pem
# Приватный ключ сервера
SSLCertificateKeyFile /etc/apache2/certs/private.key
# Файл с сертификатами промежуточных центров сертификации
SSLCertificateChainFile /etc/apache2/certs/chain-ca.pem
# Файл с сертификатом корневого центра сертификации
SSLCACertificateFile /etc/apache2/certs/ca.crt

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

sudo /etc/init.d/apache2 restart

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

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

Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Чтобы добиться этого можно, например, организовать перенаправление с помощью mod_rewrite. Для этого сначала необходимо его активировать:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

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

<VirtualHost *:80>
...
</VirtualHost>

строчки:

        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

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