Настройка HTTPS в Apache | |||||
|
Создание ключа и ssl-сертификата Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преймуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанных компанией-сертификатором (Certificate authority) стоит денег. Для создания ключа и сертификата вводим команду: openssl req -new -x509 -days 30 -keyout server.key -out server.pem На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем. На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) []:» отвечаем именем сайта, для которого создаем сертификат, например www.example.com. После ответа на все вопросы в директории должны появиться два новых файла - server.pem и server.crt (ключ и сертификат, соответственно). Чтобы использовать сгенерированный ключ нужно знать пароль введенный нами, и Apache будет спрашивать его у нас при загрузке, а к чему нам лишние вопросы от демонов? :) Поэтому снимаем пароль с ключа: cp server.key{,.orig} openssl rsa -in server.key.orig -out server.key rm server.key.orig Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору: sudo cp server.pem /etc/ssl/certs/ sudo cp server.key /etc/ssl/private/ sudo chmod 0600 /etc/ssl/private/server.key Настройка Apache Для начала необходимо активировать mod_ssl: sudo a2enmod ssl А затем включить настройки HTTPS сайта по умолчанию: sudo a2ensite default-ssl Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к вашим сертификатам. Сам файл называется /etc/apache2/sites-enabled/default-ssl (или /etc/apache2/sites-enabled/default-ssl.conf). В этом файле рекомендуется после директивы SSLEngine on добавить строчку SSLProtocol all -SSLv2 дабы запретить использование устаревшего протокола SSLv2. Дальше вам необходимо отредактировать параметры, ответственные за сертификаты. # Публичный сертификат сервера SSLCertificateFile /etc/ssl/certs/server.pem # Приватный ключ сервера SSLCertificateKeyFile /etc/ssl/private/server.key Теперь просто перезагрузите Apache: sudo service apache2 restart И если все параметры указаны верно, ваши сайты станут доступны по HTTPS. Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт. Перенаправление HTTP запросов на HTTPS Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это с помощью mod_alias. Если он не включён — включаем: sudo a2enmod alias sudo service apache2 restart Затем изменяем файл /etc/apache2/sites-enabled/000-default, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл добавляем директиву Redirect / https://example.com/ При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть. Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу. |