Let’s Encrypt представляет собой центр сертификации (Certificate Authority, CA), получивший и получивший бесплатные сертификаты TLS/SSL , тем самым чаще всего использующий зашифрованный HTTPS на веб-серверах. Процесс получения сертификатов получается за счёт наличия клиента Certbot, который автоматизирует большую часть (если не все) операций по устранению неполадок. В настоящее время весь процесс получения и установки сертификатов полностью автоматизирован для Apache и для Nginx.
В этом случае мы использовали Certbot для получения бесплатного сертификата SSL для Nginx в Ubuntu 18.04, а также быстро продлили этот сертификат.
Перед тем, как начать следовать описанному в этой статье шагам, убедитесь, что у вас есть:

Сервер с Ubuntu 18.04, настроенный согласно требованиям по настройке сервера с Ubuntu 18.04 , включает в себя присутствие нерутового (не root) пользователя с привилегиями sudoи распространением файрвола.
Зарегистрированное доменное имя. В этом мы будем использовать example.com .
Вы можете приобрести доменное имя на Namecheap , получить бесплатное доменное имя на Freenom или использовать любой другой регистратор доменных имён.
Для вашего сервера обе настроены записи DNS, восстановление ниже. . _ _
Запись A для example.com, указывающая на публичный IP-адрес вашего сервера.
Запись A для , указывающая на публичный IP-адрес вашего сервера.www.example.com
Как установить Nginx в Ubuntu 18.04 . Убедитесь, что у вас есть настроенный серверный блок для вашего домена. В этом мы будем использовать в качестве примера./etc/nginx/sites-available/example.com

Шаг 1 — Установка Certbot

Перед началом использования Let’s Encrypt для получения сертификата SSL установлен Certbot на вашем сервере.
Certbot находится в активных разработках, поэтому пакеты Certbot, представляющие собой Ubuntu, обычно являются активными. Тем не менее, разработчики Certbot располагают собственным репозиторием пакетов для Ubuntu с актуальными версиями, поэтому мы будем использовать именно этот репозиторий.
Можно добавить репозиторий:

sudo add-apt-repository ppa:certbot/certbot

Нажмите ENTER.
Установим пакет Certbot для Nginx с помощью apt:

sudo apt install python-certbot-nginx

Теперь Certbot готов к использованию, но для того, чтобы он мог настроить SSL для Nginx, нам нужно проверить настройки необходимо кое-какие Nginx.

Шаг 2 — Проверка настроек Nginx

Certbot имеет возможность найти корректный серверный блок в сборе Nginx для того, чтобы автоматически настроить SSL. Для этого он будет искать директиву server_name, которая предназначена с доменным именем, для которого вы запрашиваете сертификат.
Если вы обнаружили по выбору серверного блока в обнаружении по установке Nginx , у вас должен быть серверный блок для вашего домена по адресу с уже правильной настройкой директивы ./etc/nginx/sites-available/example.comserver_name
Для проверки файлов серверного блока в nanoлюбом другом текстовом редакторе:

sudo nano /etc/nginx/sites-available/example.com

Показать изображение с server_name.

Она должна выглядеть примерно так:
/etc/nginx/сайты-доступны/example.com
...
server_name example.com www.example.com;
...

Если она выглядит следующим образом, закрытие файла и завершение к следующему шагу.
Если она не выглядит так, как выявлено выше, обновите директиву server_name. Затем сохраните и закройте файл, после проверки правильности синтаксиса вашего конфигурационного файла командой:

sudo nginx -t

Если вы получили ошибку, откройте файл серверного блока и проверьте наличие опечаток или пропущенных символов. После того, как ваш конфигурационный файл будет проверен на корректность, перезагрузите Nginx для нового применения:

sudo systemctl reload nginx

Теперь Certbot может находить и оценивать корректный серверный блок.
Далее обновим настройки файрвола для пропуска трафика HTTPS.

Шаг 3 — Разрешение HTTPS в файрволе

Если у вас включен файрвол ufw, как рекомендуется в применении по защите сервера, вам необходимо учитывать изменения в разрешении его трафика HTTPS. К счастью, Nginx регистрирует необходимые профили ufwв момент установки.
Вы можете ознакомиться с текущими настройками команды:

sudo ufw status

Скорее всего вывод будет выглядеть следующим образом:

Вывод
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

Как видно из вывода, разрешён только трафик HTTP.
Для того, чтобы разрешить трафик HTTPS, разрешим профиль Nginx Fullи удалим избыточный профиль Nginx HTTP:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

Проверим внесённые изменения:

sudo ufw status

Теперь должны ufw выглядеть следующие варианты:

Вывод
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)

Теперь мы используем Certbot и получаем наши сертификаты.

Шаг 4 — Получение SSL сертификата

Certbot предоставляет несколько сертификатов SSL с использованием протоколов. Плагин для Nginx берет на себя сбор Nginx и восстанавливает конфигурацию, когда это необходимо. Для использования выполним команду:

sudo certbot --nginx -d example.com -d www.example.com

Эта команда запускает приложение certbotс ключом —nginxопределения -dимени домена, для которого должен быть выпущен сертификат.

Если это первый раз, когда вы запускаете certbot, вам будет предложено ввести адрес электронной почты и согласиться с условиями использования сервиса. После этого certbotсвяжется с сервером Let’s Encrypt, а затем проверит, что вы действительно нашли домен, для которого вы запросили сертификат.

Если всё прошло успешно, certbotспросит, как вы хотите настроить настройку HTTPS.

Вывод
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Выберите подходящий вариант и нажмите ENTER. Конфигурация применения будет обновлена, а Nginx перезапущен для внесения изменений. certbotвыдаст сообщение о том, что процесс прошел успешно, и где присутствуют ваши сертификаты:

Вывод
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-07-23. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Ваши сертификаты загружены, установлены и работают. Попробуйте перезагрузить ваш сайт с https://помощью и вы увидите значок безопасности в браузере. Он означает, что соединение с сайтом зашифровано, обычно выглядит как зелёная иконка замка. Если вы проверите ваш сервер тестом SSL Labs Server Test , он получил благодарность A .
Закончим тестированием процесса обновления сертификата.

Шаг 5 — Проверка автоматического обновления сертификата

Сертификаты Let’s Encrypt действительны только 90 дней. Это сделано для того, чтобы пользователи автоматизировали процесс обновления сертификатов. Пакет certbot, который мы установили, предполагает добавление скрипта обновления в /etc/cron.d. Этот сценарий используется раз в день и автоматически обновляет любые сертификаты, которые закончатся в течение первых 30 дней.
Для тестирования процесса обновления мы можем сделать «сухой» запуск (пробный запуск) certbot:

sudo certbot renew --dry-run

Если вы не обнаружили каких-либо ошибок в результате выполнения этой команды, то всё в полной мере. При использовании Certbot будет запрашиваться несколько сертификатов и перезагружаться приложения Nginx для изменений. Если быстрое обновление по какой-либо причине приводит к ошибке, Let’s Encrypt отправит электронное письмо на указанный вами адрес электронной почты с информацией о сертификате, который скоро закончится.

Безопасность Nginx с помощью Let’s Encrypt в Ubuntu 18.04

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

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