Устанавливаем бесплатный сертификат от let’s encrypt

В данной статье речь пойдет о получение бесплатного сертификата от let’s Encrypt.org, а так же небольшой автоматизации процесса обновления ключей.

Итак, приступим.

Шаг 1. Установим скрипт автоматического получения бесплатного сертификата

Воспользуемся скриптом certbot-auto от ребят из EEF. Для этого скачаем его и скопируем в /usr/local/sbin/ и дадим права на выполнение.

Шаг 2. Получим бесплатные сертификаты на наш домен

Для получениям необходимых нам сертификатов воспользуемся, только что установленным, certbot-auto.

где:

—webroot-path — путь до document root сайта

-d — список доменов для получения сертификата

Все сайты должны быть доступны, и находиться на текущем сервере

Будет спрошен email для отправки всех уведомлений:

Получение бесплатного ssl сертификата

и соглашение с условиями использования (лицензией):

Получение бесплатного ssl сертификата

После этого, в случае успешного завершения, мы увидим что-то подобное:

Отлично! Наши сертификаты создались!

Хранятся сертификаты по этому пути: /etc/letsencrypt/live/your_domain

Получаем 4 файла:

  1. cert.pem: Сертификат домена
  2. chain.pem: The Let’s Encrypt chain certificate
  3. fullchain.pem: объединение cert.pem и chain.pem
  4. privkey.pem: Приватный ключ сертификата

Шаг 3. Получение ключа Диффи-Хеллмана

Для улучшение безопасности мы должны сгененрировать ключ Диффи-Хеллмана. Сделать это можно следующей командой:

Это может занять несколько минут. После завершения, ключ будет лежать тут: /etc/ssl/certs/dhparam.pem

Шаг 4. Настройка nginx

Приступим к настройке нашего веб-сервера, в примере — nginx

Открываем файл с конфигом (например это /etc/nginx/sites-available/default)

в секцию server добавляем следующее:

директива listen указывает что необходимо слушать 443 порт, а ssl_cerificate и ssl_cerificate_key пути до полученных ключей

Далее добавим следующее:

Здесь мы указываем использовать только наиболее защищенные протоколы и ключ Диффи-Хеллмана.

И под конце, завернем все общения по незащищенном протоколу в ssl

Сохраняем конфиг.

Проверяем синтаксис конфигурации:

и в случае, если ошибок не найдено, обновляем конфиг

Отлично, теперь наш сайт работает по https.

Проверить рейтинг «защищенности» можно тут:

Вы должны получить рейтинг «А+».

Шаг 5. Автообновление сертификатов

Если вы посмотрели выданный сертификат, то заметили, что он выдан на короткий срок — 3 месяца. В случае, если у вас несколько сайтов, то обновлять каждые три месяца будет уже неудобно, поэтому предлагаю воспользоваться утилитой, которую установили в начала статьи.

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

Давайте, добавим его в крон, и обновление конфигурации nginx после него

Теперь каждый понедельник в 2:30, будет проходить проверка сертификатов, и в случае необходимости — обновлять их

Итог

В итоге мы получили поддержку https нашим сайтом, бесплатные сертификаты, автоматическое их продление.


Есть что написать?