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

Приведу пример настройка HTTPS в Apache.
Создадим ключ и сертификат:

openssl req -new -x509 -days 365 -keyout server.key -out server.pem

На вопрос «Enter PEM pass phrase:» вводим пароль и запоминаем его. На остальные вопросы можно просто нажимать Enter соглашаясь с предложенными вариантами, только на вопрос «Common Name (e.g. server FQDN or 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

Активируем ssl модуль apache2:

sudo a2enmod ssl

Включаем настройки default-ssl:

sudo a2ensite 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

Перезапустим Apache2 чтобы изменения вступили в силу:

sudo service apache2 restart

Протокол HTTPS работает по 443 порту, если используется фаервол, то необходимо открыть этот порт.

Если нужно использовать только HTTPS и запретить HTTP, то активируем mod_rewrite:

sudo a2enmod rewrite

И отредактируем файл /etc/apache2/sites-enabled/000-default.conf:

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

Снова перезапустим Apache2 чтобы изменения вступили в силу:

sudo service apache2 restart

Теперь например при открытии адреса http://www.example.com, сервер автоматически будет переадресовывать на https://www.example.com.

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