Установка SSL-сертификата в Apache: A+ на ssllabs

Для начала рассмотрим, что Вам может дать поддержка HTTPS на сайте.

  • шифрование передаваемых данных между пользователями и сайтом;
  • повышенное доверие поисковиков (Google уже использует HTTPS в качестве фактора положения сайта в своей поисковой выдаче);
  • зелёный замочек в адресной строке, радующий глаз, и на подсознательном уровне вызывающий доверие у посетителей;
  • к 2017 году разработчики Google обещают выше ранжировать сайты, работающие по HTTPS.

Всё ещё думаете, нужно ли переходить на HTTPS? Вот и я уже не думаю. Итак, приступим.

Шаг 1 — Регистрация в WoSign

Переходим по адресу https://login.wosign.com/reg.html и заполняем форму регистрации, тут мне пришлось воспользоваться переводчиком страниц, встроенным в Google Chrome, так как сайт на китайском языке. После чего необходимо подтвердить аккаунт по электронной почте.

Шаг 2 — Подтверждение прав на домен

После активации аккаунта переходим сюда — https://buy.wosign.com/free/?lan=en и задаём настройки: указываем доменное имя, тут же нам говорят о том, что сертификат будет содержать данные также для поддомена www, если мы не поставим галочку напротив пункта об отказе для этого пункта. Здесь же выбираем срок действия — 3 года, и указываем в качестве языка цепочки сертификата английский. В качестве алгоритма шифрования указываем SHA2.Вводим капчу, после чего нас перекидывает на страницу https://buy.wosign.com/free/?lan=en#myorder. Здесь жмём по ссылке Domain Control verification и попадаем на страницу подтверждения домена. На выбор предлагается отправить либо письмо на один из служебных почтовых ящиков, расположенных на вашем домене, либо путём заливки html-файла в корень директории сайта. После подтверждения прав на владение доменом будет предложено 2 варианта: система самостоятельно сгенерирует закрытый ключ и сертификат, либо предложит ввести свой CSR-запрос и получить сертификат, закрытый ключ при этом будет известен только нам, второй вариант более предпочтительный, им мы и воспользуемся.

Шаг 3 — Создание закрытого ключа и CSR-запроса

Генерируем закрытый 4096 битный RSA-ключ и CSR-запрос и сохраняем их в папке /etc/ssl/

openssl req -new -newkey rsa:4096 -nodes -keyout /etc/ssl/3_domain.com.key -out /etc/ssl/domain.com.csr

Шаг 4 — Получение SSL-сертификата

Содержимое файла /etc/ssl/domain.com.csr копируем в окно ввода CSR-запроса и нажимаем кнопку Submit. Через некоторое время (до двух часов) на почтовый ящик придёт уведомление о готовности сертификата. Перейдя по ссылке вы сможете скачать .zip архив с наборами сертификатов для различных типов веб-серверов. В нашем случае на интересуют файлы, расположенные во вложенном архиве for Apache.zip. Здесь должны лежать 2 файла: 1_root_bundle.crt и 2_domain.com.crt. Первый представляет собой файл корневого сертификата удостоверяющего центра, второй — файл вашего сертификата. Перемещаем их в папку /etc/ssl/

Шаг 5 — Настройка Apache

Редактируем файл /etc/apache2/mods-available/ssl.conf, здесь нужно изменить следующие параметры:

# Задаём алгоритмы шифрования
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

# Отключаем поддержку SSL2 и SSL3
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3

Включаем мод headers, он необходим для передачи HSTS заголовка — механизма, активирующего форсированное защищённое соединение через протокол HTTPS.

a2enmod headers

Теперь настраиваем виртуальный хост

vi /etc/apache2/sites-available/domain.com
<VirtualHost *:80>
....
# Секцию <VirtualHost *:80> можно не менять, а можно добавить автоматический редирект на https://
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    </IfModule>
</VirtualHost>
<IfModule mod_ssl.c>
    <VirtualHost *:443>
        # Устанавливаем заголовок Strict-Transport-Security для принудительного использования браузером протокола HTTPS
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
        # Сюда копируем содержимое секции <VirtualHost *:80>
        ...
        # SSL
        SSLEngine on

        # Путь до полученного сертификата
        SSLCertificateFile /etc/ssl/2_domain.com.crt

        # Путь до сгенерированного закрытого ключа
        SSLCertificateKeyFile /etc/ssl/3_domain.com.key

        # Путь до корневого сертификата УЦ
        SSLCertificateChainFile /etc/ssl/1_root_bundle.crt
</VirtualHost>
</IfModule>

Перезапускаем Apache:

service apache2 restart

И пробуем зайти на наш сайт по **https://

*Важное дополнение! Если на одном сервере необходимо запустить несколько сайтов с поддержкой SSL, то в файле /etc/apache2/ports.conf после директивы:

NameVirtualHost *:80

нужно добавить строку:

NameVirtualHost *:443

После этих изменений необходимо так же перезапустить apache:

service apache2 restart

Если Вы всё сделали правильно, слева от адреса увидите значок зеленого замочка.

Дополнительно можно проверить свой сайт на сайте ssllabs.com. Если всё правильно настроено, в результате будет получена оценка A+.

loader
Комментарии
К этому посту больше нельзя оставлять новые комментарии
Логические задачи с собеседований