Определение
SSL сертификат представляет собой пару состоящую из закрытого (private key) и открытого (public key) ключа. Основной задачей SSL сертификата является шифрование данных, которые передаются между сервером и клиентом. Шифрование необходимо для защиты данных от кражи злоумышленником.
Так как по протоколу http данные (например пароли) передаются в открытом виде, то злоумышленник сможет перехватить их (например при помощи атаки MITM) и воспользоваться ими в своих интересах.
При наличии SSL-сертификата у сайта, данные передаются по защищенному протоколу - https (http + SSL).
В отличии от протокола http, по протоколу https, перед передачей данные шифруются с помощью открытого ключа, достигая адреса назначения они расшифровываются с помощью закрытого ключа.
Владельцем открытого и закрытого ключей является сервер, на котором хостится сайт, однако открытый ключ передаются клиенту - компьютеру, который передает данные на сервер.
Зачем нужен SLL сертификат?
Сертификат будет очень полезен для сайтов, на которых есть формы оправки данных, особенно если в них отправляются пароли зарегистрированных пользователей вашего сайта.
Сертификат также позволяет повысить рейтинг сайта в поисковиках. Так, например Google, при ранжировании сайтов, отдает предпочтение тем сайтам, у которых есть SSL-сертификат, т.к. считает сайты без сертификатов потенциально опасными для посещения.
Создание SSL сертификата от компании Let's encrypt
Let's encrypt это надежный удостоверяющий центр выдачи SSL сертификатов. Данный центр выдает бесплатные SSL сертификаты на трехмесячный срок. Каждые три месяца вам необходимо обновлять сертификаты.
Далее в статье в качестве примера, я использую домен meliorem.ru, который вы должны будете заменить на свой собственный домен, для которого нужно установить сертификат.
Шаг #1: Скачиваем клиент CertBot
Выберите папку для сохранения клиента CertBot. Например, домашний каталог.
cd ~;
wget https://dl.eff.org/certbot-auto;
Шаг #2: Устанавливаем права на выполнение
chmod a+x certbot-auto
Шаг #3: Запускаем клиент
./certbot-auto certonly --authenticator manual
При создании самого первого сертификата вас попросят ввести эл.адрес пользователя и согласиться с условиями сервиса.
А также предложат подписаться на email-рассылку партнера Let's encrypt.
Шаг #4: Создаем сертификат
Следующим шагом будет непосредственно создание сертификата.
С этого шага вы в последующем будет создавать новые сертификаты.
Вводим домен сайта для которого хотим создать сертификат и соглашаемся с тем, что IP-адрес вашей машины останется в логах сервиса.
Шаг #5: Создание проверочного файла
Далее создаем на хостинге специальный проверочный файл, так сервис убеждается, что домен, для которого вы создаете сертификат, действительно ваш.
Для создания файла потребуется создать в корневом каталоге сайта скрытую папку .well-known
, для нее нужно создать дочернюю папку acme-challenge
, внутри которой и создаем файл с указанным именем и содержимым текстом.
После того как создали проверочный файл жмем Enter и дожидаемся конца процедуры верификации.
При удачном подтверждении домена вы увидите сообщение, в котором написано где хранятся необходимые файлы для создания SSL-соединения для вашего сайта, а также срок истечения действия сертификата.
Шаг #6: Установка сертификата на виртуальном хостинге
Далее необходимо в панеле вашего виртуального хостинга создать новый SSL-сертификат.
Для установки сертификата нам понадобятся файлы:
/etc/letsencrypt/live/meliorem.ru/privkey.pem
/etc/letsenctypt/live/meliorem.ru/cert.pem
Их содержимое нужно скопировать в соответствующие поля при создании сертификата в панеле хостинга. Придумайте имя для сертификата. Остальные поля необходимо указать также как на изображении ниже.
Далее нужно привязать созданный сертификат к домену.
Заходим в параметры домена и в поле SSL-сертификат устанавливаем имя только что созданного сертификата.
Теперь ваш сайт доступен по протоколу https!
Шаг #7: Настройка редиректа
Для того чтобы пользователи всегда пользовались только защищенным подключением, необходимо сделать редирект.
В файле .htaccess
вставьте следующие строки.
1 2 3 |
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] |
Заключение
В рамках данной статьи мы рассмотрели как можно установить бесплатный SSL-сертификат на виртуальный хостинг. Основным минусом описанного способа является, то, что данную процедуру придется повторять каждые три месяца. Если вы не хотите заниматься обновлением сертификатов каждые три месяца, то рекомендую рассмотреть возможность получить SSL-сертификат от компании StartSSL, которая выдает бесплатные сертификаты сроком на три года.