1. Создание сертификата
Создаем папку для сертификатов и переходим в нее:
pwd /usr/local/etc/apache24 mkdir ssl ; cd ssl
генерируем сертификат:
openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key
* в данном примере созданы открытый и закрытый ключи на 4 года (1461 день).
2. Установка модуля SSL для Apache
# apachectl -M | grep ssl ssl_module (shared)
Если видим строчку, на подобие:
ssl_module (shared)
Спускаемся к шагу 3 данной инструкции.
Иначе, устанавливаем httpd ssl_module.
ee /usr/local/etc/apache24/httpd.conf
Находим и снимаем комментарии со следующих строчек:
... LoadModule ssl_module libexec/apache24/mod_ssl.so ... Include etc/apache24/extra/httpd-ssl.conf ...
И ставим комментарии в следующих строках:
#<IfModule ssl_module> #SSLRandomSeed startup builtin #SSLRandomSeed connect builtin #</IfModule>
Перегружаем
#apachectl restart
3. Настройка Apache
cd .. ee extra/httpd-vhosts.conf
В открытый файл добавляем следующее:
<VirtualHost *:443> ServerName site.ua DocumentRoot /usr/local/www/apache24/data SSLEngine on SSLCertificateFile /usr/local/etc/apache24/ssl/cert.pem SSLCertificateKeyFile /usr/local/etc/apache24/ssl/cert.key </VirtualHost>
Проверяем корректность настроек в Apache:
apachectl configtest Syntax OK
Перечитываем конфигурацию apache:
apachectl graceful
4. Проверка работоспособности
Открываем браузер и переходим на наш сайт, добавив https://. При использовании нашего самоподписного сертификата, браузер выдаст предупреждение, что передача данных не безопасна. Подтверждаем наше намерение открыть сайт.
5. Настройка редиректа
Чтобы все запросы по http автоматически перенаправлялись на https, необходимо настроить перенаправление (redirect). Есть несколько способов это сделать.
- В конфигурационном файле
Открываем файл с настройкой виртуальных доменов (как в шаге 3) и дописываем следующее:
<VirtualHost *:80> ServerName site.ua RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost>
* в конкретном примере, мы перенаправили все запросы для сайта site.ua.
** обратите особое внимание, что если у Вас уже есть VirtualHost *:80 для настраиваемого сайта, необходимо его закомментировать или отредактировать.
- В файле .htaccess в корневой папке вашего сайта
RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Важно: Если у вас есть существующий код в .htacess, добавьте эти строки — выше.