Установка 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+.
Комментарии