Для того, чтобы между пользователем и сайтом, на который он заходит, было безопасное соединение, устанавливают сертификат. Сертификат обеспечивает шифрование данных, в результате взаимодействие с сайтом становится безопасным. Сертификаты бывают не только платные, но и бесплатные. Одним из надежных бесплатных сертификатов является сертификат Let's Encrypt. Получить его можно с помощью certbot, затем установить на веб-сервере. Процесс получения сертификата несложный, но нужно немного поработать в терминале.

Как получить бесплатный сертификат Let's Encrypt и установить его на сайте хостинга Ru-Center

Получение бесплатного сертификата Let's Encrypt

Для получения сертификата воспользуемся операционной системой Debian 8. Сначала надо выполнить немного подготовительных действий:

  • подключим репозитории;
  • установим deb пакет ntp - произведем синхронизацию по дате и времени;
  • установим deb пакет filezilla - для работы с файлами и сайтом.

Подключение репозитория

Для чего нужны репозитории и какие бывают можно почитать. Открываем терминал, команды выполняем под пользователем root или используем sudo. Чтобы прописать репозитории открываем файл sources.list (каталог /etc/apt) в любом блокноте:

# nano /etc/apt/sources.list

 Прописываем репозитории и сохраняем файл:

# security updates
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# binary and source packages
deb http://ftp.ru.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.ru.debian.org/debian/ jessie main contrib non-free
# jessie-updates
deb http://ftp.ru.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp.ru.debian.org/debian/ jessie-updates main contrib non-free

Установка deb пакетов ntp и fileziilla

Для установки пакета ntp (для синхронизации времени в системе):

# apt-get install ntp

Для установки пакета fillezilla:

# apt-get install filezilla

Далее обновляем список пакетов, доступных из репозитория в системе:

# apt-get update

Затем проверяем актуальность даты и времени в системе:

# date

Установка deb пакета certbot и получение сертификата

Создаём каталог, скачаем в этот каталог пакет certbot, присвоим certbot нужные права:

# mkdir /letsencrypt
# cd /letsencrypt
# wget https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto

Получение сертификата

Для получения сертификата запускаем certbot:

# ./certbot-auto certonly --manual

 

На появление запроса "Хотите продолжить?" - "y". После установки и настройки необходимых для операционной системы пакетов, отвечаем на запросы. Если не появляется диалог с вопросами, то нажимаем Enter несколько раз с небольшими паузами между нажатиями.

receipt certificate payment 1

receipt certificate payment 2

Далее повторно запускаем certbot.

  • Enter email address.... - Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. (вписываем свой почтовый адрес на который будет зарегистрирован сертификат).
  • Please read the Terms of Service at... - A
  • Would you be  willing to share your email address.... - N
  • Please enter in your domain name(s)... - feode.ru (вписываем свой домен)
  • Are you OK with your IP being logged? - Y

Далее нас попросят создать на веб сервере в корне домена каталог /.well-known/acme-challenge/.

В этом каталоге необходимо создать файл с именем и содержимым, которое указано в диалоге.

receipt certificate payment 2 1

Для этого открываем filezilla, вводим данные (хост, имя пользователя, пароль), нажимаем "Быстрое соединение". Далее переходим в корень сайта (например /feode.ru/docs/)

receipt certificate payment 3

В корне сайта создаём каталог /.well-known/, переходим в этот каталог и создаём еще один каталог с именем /acme-challenge/.

receipt certificate payment 4

Затем открываем новый терминал и создаём в каталоге /letsencrypt/ файл с именем, которое указано в первом терминале и с помощью блокнота записываем в этот файл данные, которые указаны в первом терминале.

receipt certificate payment 5

Копируем этот файл с помощью filezilla на сайт в каталог /.well-known/acme-challenge/

receipt certificate payment 6

Проверяем правильность выполненных действий открыв ссылку в браузере.

receipt certificate payment 7

В результате откроется в браузере содержимое файла, который мы скопировали на наш сайт.

receipt certificate payment 8

После проверки в первом терминале нажимаем "Enter" и получаем сертификат. Ключи сертификата можно найти по адресу /etc/letsencrypt/archive/yoursite/.

receipt certificate payment 9

Установка сертификата на сайт

Для установки сертификата Let's Encrypt на хостинг Ru-Center, открываем в бразере сайт https://www.nic.ru/, вводим № договора и пароль. Далее надо пройти по следующему пути: Хостинг, почта, конструктор сайтов - Управление хостингом - Сайты. Выбираем сайт, на который будем устанавливать сертификат. В новом окне выбираем вкладку "Безопасность". Включаем чекбокс "Защищенное HTTPS-соединение".

Появится предупреждение "Для включения HTTPS-соединения необходимо установить SSL-сертификат". Нажимаем "Установить".

Перед тем как загрузить ключи сертификата, скопируем в терминале операционной системы ключи в каталог /letsencrept/:

# cp -r /etc/letsencrypt/archive/yoursite.ru/* /letsencrypt/

Далее с помощью "Загрузить файл" на сайте загружаем ключи сертификата.
  • Для поля "Сертификат" выбираем cert.pem
  • Для поля "Промежуточный сертификат" нажимаем "Загрузить промежуточный сертификат" и выбираем chain.pem. Затем выбираем fullchain.pem.
  • Для поля "Приватный ключ сертификата" нажимаем "Загрузить файл" и выбираем privkey.pem.

receipt certificate payment 10

Нажимаем "Установить". Если всё сделано правильно, то появится "Вы успешно установили сертификат". 

receipt certificate payment 11

Через 5-7 минут сертификат заработает и появится возможность загружать сайт с помощью https. В браузере появится надпись защищено, когда вы будете открывать свой сайт. Сертификат будет действителен 3 месяца.

Перенаправление всех запросов с протокола HTTP на HTTPS

Чтобы ваш сайт работал исплючительно по протоколу HTTPS необходимо в файле .htaccess добавить:

RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Посмотреть, что и как делать, можно здесь: