Настраиваем SSL-сертификат на сервере

9 Января 2019

Хотим мы того или нет, но переход на https неизбежен. Активно стимулирует владельцев к переходу на безопасную версию http компания Google: как минимум, в адресной строке Chrome (да уже и других браузеров) будет отметка о том, что соединение не защищено, как максимум, поисковые результаты с сайта не будут появляться в так называемых rich snippets, что довольно плохо для Интернет-магазинов.

1.png

Сообщение о незащищенном соединении в браузере Opera

Ранее мы писали о выборе SSL-сертификата, поэтому не будем повторяться, а лучше покажем, как настроить веб-сервер Apache для работы по https. При покупке обычного хостинга все операции с SSL-сертификатом осуществляются, как правило, с помощью предоставляемой хостером панели управления – все достаточно просто. Когда же у нас есть собственный виртуальный сервер, настраивать все придется вручную.

Заказ сертификата

Первым делом нужно заказать сертификат. Сделать это можно в панели управления Xelent в разделе SSL. Просто нажмите кнопку Заказать сертификат и выберите какой именно сертификат вы хотите купить.

2.png

Раздел SSL

3.png

Параметры сертификата

Настройка веб-сервера

В результате заказа сертификата вам будут предоставлены два файла – SSL-файл сертификата (расширение pem) и ключевой файл (расширение key). Оба эти файла нужно поместить в каталог /etc/ssl.

Перейдите в каталог /etc/apache2/sites-available. В нем хранятся конфигурационные файлы сайтов, работающих на вашем веб-сервере.

Откройте файл, содержащий конфигурацию сайта, для которого вы купили сертификат. Далее представим, что наш сайт называется firma.ru. Конфигурация для него будет следующей:

<VirtualHost *:80>
      ServerName firma.ru
      Redirect permanent / https://firma.ru/
</VirtualHost>

<VirtualHost *:443>
      ServerAdmin admin@firma.ru
      ServerName firma.ru
      ServerAlias www.firma.ru xxx.xxx.xxx.xxx
      DocumentRoot /srv/www/firma.ru/htdocs
      ErrorLog /srv/www/firma.ru/logs/error_log
      CustomLog /srv/www/firma.ru/logs/access_log combined env=!loopback
             
             SSLEngine on
      SSLCertificate /etc/ssl/firma.pem
      SSLCertificateKeyFile /etc/ssl/server.key
</VirtualHost>
Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения

Разберемся, что и к чему. Сначала мы создаем виртуальный хост для порта 80, который будет работать как перенаправление – на https-версию сайта. Можно было бы сделать это и через .htaccess, но поскольку у нас есть доступ к конфигу сервера, то можно сделать это прямо здесь.

Далее мы описываем виртуальный хост для порта 443 (используется SSL). Настройки такие же, как и для обычной версии сайта (ServerName, DocumentRoot и т.д.). Отличие заключается только в наличии трех SSL-директив. Первая включает SSL, вторая задает PEM-файл, третья – KEY-файл.

После этого нужно сохранить файл конфигурации и перезапустить Apache:

sudo systemctl restart apache2.service

или (в зависимости от вашего дистрибутива)

sudo service apache2 restart                                                                                            

Обратитесь к вашему сайту. Если вместо надписи На защищено появилось изображение зеленого замка, то все хорошо и настройку можно считать завершенной.

4.png

Соединение защищено

Иногда замок отображается не зеленым, а серым и не закрытым, а открытым. Это означает, что не все ресурсы сайта загружаются по протоколу https. Откройте исходный код страницы и произведите поиск по строке "http://" (без кавычек). Ваша задача – найти адреса ресурсов (JS, CSS, картинок), которые загружаются по протоколу http. Исправьте URL проблемных ресурсов на https:// и снова обновите страницу сайта. Если вы все сделаете правильно, вы увидите зеленый замок соединения.

Получить консультацию специалиста
Персональный ассистент
Cloud.Xelent