Не ходи по косогору, сапоги стопчешь! (К. Прутков).

Как установить сертификат SSL и SPDY на Ubuntu с помощью «Let’s Encrypt»

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (4 оценок, среднее: 4,75 из 5)
Загрузка...

Статья опубликована: 11 декабря 2016

Как установить сертификат SSL и SPDY на Ubuntu Nginx с помощью «Let’s Encrypt»
Можно спросить, «Почему мы должны делать это вообще?» Хороший вопрос!

  1. Все пароли и данные кредитных карт, введенные пользователями на ваших сайтах могут быть подвержены третьей стороной, поэтому было бы целесообразно зашифровать соединение с использованием SSL-сертификата.
  2. В настоящее время это хорошая практика, использовать (быстрый) протокол SPDY, который является расширением протокола HTTPS и удаляет предел 6 одновременных подключений с одного браузера, который сохраняется в HTTP и HTTPS. При этом удаляются ограничения на все статические данные, такие как изображения, скрипты и стили загружаются одновременно (намного быстрее).

Теперь давайте перейдем непосредственно к «Let’s Encrypt».

Let’s Encrypt является свободным, автоматизированным, и открытым органом сертификации от Security Research Group Internet (ISRG).

Internet Security Research Group (ISRG) является общественной корпорацией. Миссия ISRG заключается в снижении финансовых, технологических и образовательных барьеров для обеспечения связи через Интернет. Подробнее на вики: Let’s Encrypt

Его авторами являются известные компании, так что вы можете доверять ему:

Спонсоры сертификата Let’s Encrypt

Другими словами, вы получаете бесплатно SSL-сертификат, который стоил сотни долларов ранее. Даже лучше, вы можете настроить все, чтобы автоматически обновлять сертификат!

Предпосылки

В этом руководстве у вас уже есть:

  • у вас установлен сервер Nginx и настроен для обслуживания ваших сайтов.
  • вы создали несколько виртуальных хостов example.ru, которые имеют псевдоним www.example.ru.
  • все данные в конфигах Nginx перенаправляют трафик на www.example.ru с example.ru

Данная статья рассказывает, как получить сертификат без остановки Nginx и обновление скрипта и захватывает все необходимые данные из Nginx конфигов так что легче автоматизировать!
Теперь начнем установку и настройку сертификата let’s encrypt!

Шаг 1 – Установите клиент Let’s Encrypt

Первый шаг к использованию Let’s Encrypt. это получить сертификат SSL, чтобы установить программное обеспечение Let’s Encrypt на сервере. В настоящее время, лучший способ установить Let’s Encrypt, это просто клонировать его из официального репозитория GitHub. В будущем, скорее всего он будет доступен через менеджер пакетов. Смотрите нашу статью Как добавить бесплатный SSL сертификат Let’s Encrypt в WordPress

Установка Git и bc

Начнем сейчас установку Encrypt Git и bc, так что мы можем клонировать репозиторий Let’s Encrypt.

Обновление менеджера пакетов вашего сервера, а затем установить пакеты Git и bc с apt-get:

 

Клонирование Let’s Encrypt

Теперь мы можем клонировать репозиторий Let’s Encrypt в каталог /opt с помощью следующей команды:

 

Шаг 2 – Получение сертификата

Let’s Encrypt предоставляет множество способов получения SSL-сертификатов, с помощью различных плагинов. В отличие от плагина Apache, большинство плагинов только поможет вам получить сертификат, потом необходимо вручную настроить веб-сервер для использования. Плагины, которые только получают сертификаты, а не устанавливают, упоминаются как “authenticators”, так как они используются для проверки подлинности, должен ли сервер быть выдан сертификат.

Предлагаю использовать плагин standalone. Это довольно просто:

 

Просто следуйте инструкциям!

Вместо этого вы можете использовать плагин WebRoot для получения сертификата SSL. И мы покажем вам, как это сделать.

Как использовать плагин Webroot

Плагин Webroot работает, помещая специальный файл в каталог /.well-known в корневом каталоге документов, который может быть открыт (через веб – сервер) службой Let’s Encrypt для проверки. В зависимости от конфигурации, вам может потребоваться явным образом разрешить доступ к каталогу /.well-known. Для того, чтобы убедиться, что каталог доступен для Let’s Encrypt для проверки, давайте сделаем изменения в нашей конфигурации Nginx. Откройте его для редактирования:

 

Добавьте это местоположение блока вашего активного блока сервера:

 

Сохраните и выйдите (Ctrl + O, Ctrl + X)

Перезагрузка Nginx:

 

Теперь все готово, чтобы получить наш совершенно новый сертификат бесплатно SSL!

Для того, чтобы получить его, вам нужно указать свой адрес электронной почты для регистрации, а затем получить уведомления от Let’s Encrypt. Также вам потребуется директория webroot – root к корню сайта.

При условии, что:

  • user@example.ru – ваш адрес электронной почты
  • /var/www/example.ru/html/ – корневой путь example.ru

… Волшебное заклинание, чтобы получить сертификат SSL:

 

Если все прошло успешно, вы должны увидеть сообщение вывода, который выглядит примерно так:

 

Обратите внимание, что это сообщение содержит путь, где ваши сертификаты хранятся и дата окончания срока действия сертификата.

Если операция не была успешной, читайте сообщения об ошибках тщательно и устраните проблемы. Вот те, с которыми я столкнулся:

  • InsecurePlatformWarning – решение здесь https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning
  • Ошибка процедуры авторизации. example.ru (HTTP-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://example.ru/.well-known/acme-challenge/ksYH5LF9O28de_1–WIRYPQnRFOs67_YQQ1da__Yoys. Решение: проверьте «местоположение» конфигурационного блока упомянутый выше, убедитесь что он работает нормально, проверка разрешений на каталог .well-known, я полагаю, ваш текущий пользователь должны иметь записываемый доступ к SSH и Nginx.

Файлы сертификатов

После получения сертификата, вы будете иметь следующие PEM-закодированные файлы:

  • cert.pem: Сертификат вашего домена
  • chain.pem: цепочка сертификатов Let’s Encrypt
  • fullchain.pem: cert.pem и chain.pem в сочетании
  • privkey.pem: секретный ключ вашего сертификата

Важно, что вы знаете о местонахождении файлов сертификатов, которые только что были созданы, так что вы можете использовать их в конфигурации веб-сервера. Сами файлы помещаются в подкаталог в /etc/letsencrypt/archive

Тем не менее, Let’s Encrypt создает символические ссылки на самые последние файлы сертификатов в директории /etc/letsencrypt/live/your_domain_name. Поскольку ссылки всегда будут указывать на самые последние файлы сертификатов, это тот путь, который вы должны использовать, чтобы обратиться к файлам сертификатов.

Шаг 3 – Настройка TLS / SSL на веб-сервере (Nginx)

Теперь, когда у вас есть сертификат SSL, необходимо настроить веб-сервер, чтобы использовать его.

Мы покажем, как настроить веб-сервер Nginx для использования сертификата.

Теперь вы должны изменить конфигурацию Nginx, который содержит ваш блок сервера. Так как вы настраиваете режим Nginx вы достаточно осведомлены, где найти конфигурацию вашего виртуального хоста Nginx. Итак, давайте предположим, что он находится в /etc/nginx/sites-available/example.ru. Мы будем использовать nano, чтобы изменить его:

 

Найти блок сервера и закомментируйте или удалите строки, предназначенные для настройки этого блока сервера, где прослушивается порт 80. Что-то вроде этого:

 

Мы собираемся настроить этот блок сервера прослушивать порт 443 с SSL и SPDY.

В вашем блоке сервера добавьте следующие строки:

 

Это позволяет использовать ваш сервер для использования SSL и SPDY, и говорит ему использовать SSL сертификат Let’s Encrypt, что были получены нами ранее.

Да, да, это правильно, все, что вам нужно, чтобы получить поддержку SPDY, чтобы добавить это ключевое слово в конфигурации … и установить SSL сертификат smile

Чтобы разрешить только самые безопасные SSL протоколы и шифры, добавьте следующие строки в том же блоке сервера:

 

И, наконец, за пределами исходного блока сервера (который прослушивает HTTPS, порт 443), добавьте этот блок сервера для перенаправления HTTP (порт 80) к HTTPS. Обязательно замените выделенную часть вашим собственным доменным именем:

 

Сохраните и выйдите (Ctrl + O, Ctrl + X).

Теперь, чтобы изменения вступили в силу, перезапустите Nginx:

 

Сертификат Let’s Encrypt TLS/SSL  в настоящее время на месте.

Конфигурация Nginx выглядит следующим образом:

 

На данный момент, вы должны проверить, что сертификат  TLS / SSL работает, посетив ваш домен через HTTPS в веб-браузере.

Шаг 4 – Настройка автопродления

Сертификат Let’s Encrypt действительны в течение 90 дней, но рекомендуется продлить срок действия сертификатов каждые 60 дней. На момент написания этой статьи, автоматическое обновление до сих пор не доступно как особенность самого клиента, но вы можете вручную обновить свои сертификаты, запустив клиент Let’s Encrypt.

Практический способ убедиться, что ваши сертификаты не будут устаревать, это создать cronjob, которая будет автоматически обрабатывать процесс обновления для вас.

Для того, чтобы продлить срок действия сертификатов необходимо добавить следующее:

 

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

 

Теперь, когда мы знаем команды, которые нам необходимы для обновления нашего сертификата, мы можем автоматизировать этот процесс с помощью сценариев и задания cron.

Cценарий обновления

Напишем следующий сценарий:

 

Теперь сохраните его в /usr/local/bin/letsencrypt-renew и установите атрибут выполнения:

 

Предполагая, что конфигурация сайта хранится в /etc/nginx/sites-enabled/example.ru.conf вы можете выполнить:

 

Вывод:

Далее, мы будем редактировать crontab, чтобы создать новую задачу, которая будет выполнить эту команду каждую неделю. Для редактирования crontab под корневым пользователем, выполните следующую команду:

 

Включите следующее содержание, все в одной строке:

 

Сохраните и выйдите. Это позволит создать новый crontab, которая будет выполнять команду продления letsencrypt в каждый понедельник в 2:30 утра. Выходной сигнал, генерируемый командой будет поступать в лог-файл, расположенный в каталоге /var/log/le-renewal.log.

Вывод

Вот и все! Ваш веб-сервер теперь использует бесплатное шифрование сертификатом Let’s Encrypt TLS/SSL и надежно защищает контент HTTPS. Более того, теперь ваш сервер использует SPDY!

Как установить сертификат SSL и SPDY на Ubuntu Nginx с помощью «Let’s Encrypt»


Читайте также

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close