Как защитить Nginx с помощью Let’s Encrypt на Ubuntu 16.04/18.04

Let’s Encrypt — центр сертификации, который позволяет бесплатно получить TSL/SSL-сертификат. Благодаря клиенту Certbot, который автоматически выполняет большую часть настроек, выпустить сертификат и настроить HTTPS-протокол можно за несколько простых шагов.

Сервис настройки NGINX

Не тратьте время на ручную подготовку конфигурационных файлов для NGINX. Выберите нужные параметры и скачайте уже сформированный конфигурационный файл.

Предварительная подготовка

  • сервер с операционной системой Ubuntu 16.04/18.04;
  • Nginx, установленный на сервер (Как установить Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 16.04/18.04);
  • домен, который привязан к облачному серверу (Как привязать домен к облачному серверу?).

Этап 1. Установка Certbot

Certbot — клиент для автоматического создания и установки SSL-сертификата. Разработчики постоянно работают над его улучшением. Поэтому Certbot, который имеется в стандартном репозитории Ubuntu, обычно устаревший.

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

Добавьте репозиторий Certbot командами:

Затем обновите информацию в операционной системе:

Установите Certbot для Nginx командой:

Готово, Certbot установлен.

Этап 2. Настройка Nginx Ubuntu

Certbot автоматический ищет в конфигурационных файлах Nginx блок server , отвечающий за домен, для которого будет установлен SSL-сертификат.

Если вы устанавливали Nginx по инструкции Как установить Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 16.04/18.04, то вы используете конфигурационный файл по умолчанию для одного домена. Файлы вашего сайта расположены в каталоге /var/www/html , а в конфиге в директиве server_name указан домен, который привязан к серверу.

Проверим настройки конфига:

Откройте конфигурационный файл командой:

В конфигурационном файле должно быть следующее:

Затем перезапустите Nginx командой:

Готово, вы настроили Nginx.

Этап 3. Разрешение HTTPS-подключения

В инструкции Как установить Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 16.04/18.04 на втором этапе «Установка Nginx» были произведены настройки firewall. Проверьте, что HTTPS-подключение для сервера доступно, с помощью команды

Вы должны получить примерно следующее содержимое:

Этап 4. Получение SSL-сертификата

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

Для получения SSL-сертификата выполните команду:

Ключ -d определяет имя домена, для которого выпускается сертификат. Укажите вместо домена faq-reg.ru свой домен, который привязан к серверу.

При первом запуске Certbot система запросит ваш e-mail и соглашение на использование сервиса. Затем будет произведена проверка домена: DNS-серверы домена должны указывать на ваш сервер.

Если проверка прошла успешно, Certbot спросит, как вы хотите настроить конфигурацию HTTPS:

  1. Без редиректа — не вносит никаких изменений в конфигурационный файл.
  2. Редирект — настраивает все редиректы для безопасного доступа по HTTPS. Рекомендуется для новых сайтов.

Выберите подходящий вариант (введите 1 или 2) и нажмите Enter:

После окончания установки SSL-сертификата система выдаст сообщение, что процесс установки прошёл успешно. В сообщении будет указано, где расположены файлы вашего сертификата. Сертификат Let’s Encrypt действителен только 90 дней. Certbot автоматически будет обновлять сертификат. При возникновении ошибки вы получите сообщение на e-mail, который был указан при первом запуске Certbot.

При переходе по вашему домену будет указано, что соединение с сайтом защищено:

Готово, теперь ваш сайт защищён SSL-сертификатом Let’s Encrypt. Настройка была произведена автоматически благодаря Certbot.

Источник



Защитите Nginx с помощью Let's Encrypt в Ubuntu 20.04

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

Сертификатам, выпущенным Let's Encrypt, доверяют все основные браузеры, и они действительны в течение 90 дней с даты выпуска.

В этом руководстве объясняется, как установить бесплатный SSL-сертификат Let's Encrypt в Ubuntu 20.04, используя Nginx в качестве веб-сервера. Мы также покажем, как настроить Nginx для использования сертификата SSL и включения HTTP / 2.

Подготовка

Прежде чем продолжить, убедитесь, что вы выполнили следующие предварительные требования:

  • У вас есть доменное имя, указывающее на ваш публичный IP-адрес. Мы будем использовать example.com .
  • На вашем сервере CentOS установлен Nginx .
  • Ваш брандмауэр настроен на прием подключений через порты 80 и 443.

Установка Certbot

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

Certbot — это полнофункциональный и простой в использовании инструмент, который автоматизирует задачи по получению и обновлению SSL-сертификатов Let's Encrypt, а также по настройке веб-серверов для использования сертификатов.

Пакет certbot включен в репозитории Ubuntu по умолчанию. Для его установки выполните следующие команды:

Создание сильной группы Dh (Диффи-Хеллмана)

Обмен ключами Диффи – Хеллмана (DH) — это метод безопасного обмена криптографическими ключами по незащищенному каналу связи.

Сгенерируйте новый набор 2048-битных параметров DH, введя следующую команду:

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

Получение SSL-сертификата Let's Encrypt

Чтобы получить сертификат SSL для домена, мы собираемся использовать плагин Webroot, который работает путем создания временного файла для проверки запрошенного домена в каталоге $/.well-known/acme-challenge . Сервер Let's Encrypt отправляет HTTP-запросы к временному файлу, чтобы убедиться, что запрошенный домен разрешается на сервер, на котором работает certbot.

Чтобы упростить .well-known/acme-challenge мы собираемся отобразить все HTTP-запросы для .well-known/acme-challenge в один каталог /var/lib/letsencrypt .

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

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

Откройте свой текстовый редактор и создайте первый фрагмент, letsencrypt.conf :

Затем создайте второй фрагмент, ssl.conf , который включает в себя модули для вырезания, рекомендованные Mozilla , включает сшивание OCSP, HTTP Strict Transport Security (HSTS) и применяет несколько ориентированных на безопасность заголовков HTTP.

После создания фрагментов откройте файл блока сервера домена и letsencrypt.conf фрагмент letsencrypt.conf как показано ниже:

Чтобы включить новый серверный блок, создайте символическую ссылку из файла в каталог с sites-enabled :

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

Теперь вы можете запустить Certbot с подключаемым модулем webroot и получить файлы сертификатов SSL, выполнив:

Кроме этого:  Государственные стандарты с нормативными документами по изделиям из ПВХ

Если сертификат SSL получен успешно, certbot напечатает следующее сообщение:

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

В приведенной выше конфигурации мы форсируем HTTPS и перенаправляем с www на версию без www.

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

Чтобы убедиться, что сертификат SSL успешно установлен, откройте свой веб-сайт, используя https:// , и вы увидите значок зеленого замка.

Если вы протестируете свой домен с помощью SSL Labs Server Test , вы получите оценку A+ , как показано на изображении ниже:

Автоматическое продление SSL-сертификата Let's Encrypt

Сертификаты Let's Encrypt действительны в течение 90 дней. Чтобы автоматически обновлять сертификаты до истечения срока их действия, пакет certbot создает задание cron и таймер systemd. Таймер автоматически обновит сертификаты за 30 дней до истечения срока их действия.

При обновлении сертификата необходимо перезагрузить службу nginx. Откройте /etc/letsencrypt/cli.ini и добавьте следующую строку:

Чтобы проверить процесс обновления, запустите команду certbot —dry-run :

Если ошибок нет, значит процесс продления прошел успешно.

Выводы

Мы показали вам, как использовать certbot для загрузки SSL-сертификатов Let's Encrypt для вашего домена. Мы также создали сниппеты Nginx, чтобы избежать дублирования кода, и настроили Nginx для использования сертификатов.

Чтобы узнать больше о том, как использовать Certbot, посетите их документацию .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Настройка SSL в Nginx с Lets Encrypt

Nginx — один из самых популярных веб-серверов, благодаря его высокой производительности при больших нагрузках. В наше время всё больше и больше сайтов поддерживают HTTPS и производители браузеров, такие как Google и Mozilla всеми силами пытаются мотивировать владельцев сайтов переходить на этот защищённый протокол.

В последнее время сделать это не очень сложно, потому что все популярные веб-серверы его поддерживают, а получить сертификат можно абсолютно бесплатно. В сегодняшней статье мы поговорим о том как настроить SSL в Nginx с сертификатом Lets Encrypt.

Настройка SSL в Nginx с Lets Encrypt

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

Обратите внимание, что для получения сертификата необходимо чтобы к серверу был привязан домен, потому что сертификат будет выдан именно для этого домена и только так центр сертификации сможет убедится, что этот домен и сервер ваши. В этом примере я буду получать сертификат для домена vps.losst.ru и www.vps.losst.ru. Соответственно А запись обоих доменов должна указывать на сервер.

Шаг 1. Настройка виртуального хоста

Если у вас ещё не настроен HTTP виртуальный хост для сайта, то это надо сделать потому что иначе установить SSL сертификат Nginx не получится. Например, для vps.losst.ru самая простая конфигурация будет выглядеть вот так:

sudo vi /etc/nginx/conf.d/vps-losst-ru.conf

server <
listen 80;
server_name vps.losst.ru www.vps.losst.ru;
access_log /var/log/nginx/vps-losst-ru.access.log main;
root /var/www/vps.losst.ru/public_html/;
index index.html index.htm;
location / <
try_files $uri $uri/ =404;
>
>

Затем проверьте конфигурацию Nginx:

И если всё верно, перезапустите веб-сервер:

sudo systemctl restart nginx

Директория /var/www/vps.losst.ru/public_html/ должна существовать, и в ней надо расположить индексный файл с каким нибудь содержимым:

sudo mkdir -p /var/www/vps.losst.ru/public_html/

sudo vi /var/www/vps.losst.ru/public_html/index.html

Убедиться что всё работает можно с помощью браузера или утилиты curl:

2. Установка Certbot

Для получения сертификатов LetsEncrypt официально рекомендовано использовать клиент Certbot. Установить программу можно из официальных репозиториев:

sudo apt install certbot certbot-python-nginx

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

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

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

sudo certbot certonly —nginx -d vps.losst.ru -d www.vps.losst.ru

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

Далее сертификат SSL создастся и вы получите такое сообщение:

Здесь программа сообщает о том, что файлы сертификата SSL Nginx сохранены в каталоге /etc/letsencrypt/live/vps.losst.ru/. Теперь настройка SSL Nginx.

4. Настройка виртуального хоста для SSL

В папке /etc/letsencrypt/live/vps.losst.ru/ находятся такие файлы сертификатов:

  • cert.pem — файл сертификата, использовать его мы не будем;
  • chain.pem — файл цепочки сертификата, тоже не будем использовать;
  • privkey.pem — приватный ключ сертификата, надо прописать в параметре ssl_certificate_key;
  • fullchain.pem — в нём объединено содержимое cert.pem и chain.pem, надо прописать в параметре ssl_certificate.

Для SSL надо создать отдельный файл виртуального хоста, в котором порт прослушивания будет 443, и будут присутствовать несколько директив настройки SSL:

sudo vi /etc/nginx/conf.d/vps-losst-ru-ssl.conf

server <
listen 443 ssl;
server_name vps.losst.ru www.vps.losst.ru;
access_log /var/log/nginx/vps-losst-ru.access.log main;
root /var/www/vps.losst.ru/public_html/;
index index.html index.htm;
ssl on;
ssl_certificate /etc/letsencrypt/live/vps.losst.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vps.losst.ru/privkey.pem;
location / <
try_files $uri $uri/ =404;
>
>

После создания файла останется перезапустить Nginx:

sudo systemctl restart nginx

Уже на этом этапе всё должно работать.

5. Дополнительная безопасность

Чтобы сделать соединение SSL более безопасным надо отключить небезопасные протоколы и включить только надежные шифры. Для настройки протоколов используйте директиву ssl_protocols. На сегодняшний день самым безопасным считается TLS:

sudo vi /etc/nginx/conf.d/vps-losst-ru-ssl.conf

ssl_protocols TLSv1.2 TLSv1.3;

В примере я разрешаю только TLSv1.2 и TLSv1.3 для хорошей оценки от ssllabs, но в производственной системе возможно стоит разрешить всю линейку протоколов TLS, если вам нужна поддержка устройств не поддерживающих современные методы шифрования. Затем надо добавить шифры, которые мы хотим использовать:

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

После завершения настроек не забудьте перезапустить Nginx.

Кроме этого:  Установка сигнализации с автозапуском Купить и установить в сертифицированных центрах AutoSab в Москве По н

6. Проверка

Проверить параметры работы SSL можно с помощью сайта SSLlabs. Просто откройте такую ссылку в браузере, заменив домен сайта на свой:

Как видите, всё хорошо, и сайт получил оценку A. Сертификат SSL Nginx установлен и работает.

7. Обновление сертификата

Минус сертификатов от Lets Encrypt в том, что они актуальны только 90 дней. За 30 дней до истечения этого срока их рекомендуется перевыпускать. Для этого существует специальная команда:

Она проверяет все сертификаты, установленные в системе и перевыпускает те, что скоро будут просрочены. Чтобы настроить автоматический перевыпуск сертификатов просто добавьте эту команду в crontab:

30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

Эта команда будет выполнятся каждый понедельник в 2:30 и записывать свой вывод в файл /var/log/le-renew.log.

Выводы

В этой небольшой статье мы рассмотрели как выполняется настройка SSL Nginx с Lets Encrypt. Как видите, всё вполне выполнимо, несмотря на определённую сложность. А вы уже используете SSL? Планируете использовать? Напишите в комментариях!

Источник

Как настроить Nginx с помощью Let’s Encrypt на Ubuntu 20.04

Чтобы включить безопасную связь HTTPS на вашем веб-сервере NGINX. Вам необходимо получить сертификат SSL/TLS от доверенного центра сертификации. Let’s Encrypt — это некоммерческий центр сертификации, который предлагает бесплатные сертификаты SSL / TLS.

В этом руководстве описывается, как настроить бесплатный сертификат SSL/TLS, выданный компанией Let’s Encrypt на сервере Ubuntu 20.04 LTS под управлением сервера Nginx.

Установите Certbot на Ubuntu

Certbot — это инструмент с открытым исходным кодом, который упрощает и автоматизирует процесс получения и обновления сертификатов от Let’s Encrypt. Мы собираемся установить Certbot с помощью системы развертывания Snap. Snap предварительно установлен на Ubuntu 20.04.

Обновление snapd

Выполните следующие команды для обновления snapd.

$ sudo snap install core
$ sudo snap refresh core

Установите certbot snap

Далее требуется установить оснастку Certbot snap.

Примечание: Если вы ранее установили Certbot с помощью стандартной команды apt, то сначала требуется удалить его. Это гарантирует, что привязка Certbot будет работает правильно.

$ sudo apt-get remove certbot
$ sudo snap install – classic certbot
certbot 1.11.0 from Certbot Project (certbot-eff✓) installed

Включить команду certbot

После успешной установки оснастки Certbot выполните следующую команду. Эта команда включит certbot.

$ sudo ln-s /snap/bin / certbot / usr/bin/certbot

Получите сертификат Let’s Encrypt

Когда вы запустите приведенную ниже команду, certbot проведет вас через остальную часть процесса. Certbot также автоматически обновляет конфигурацию NGINX для активации HTTPS.

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

Получите сертификат Let’s Encrypt

Ниже приводится краткое описание того, что certbot предложит вам сделать во время этого процесса.

  1. Укажите адрес электронной почты, на который будут отправляться уведомления о продлении и безопасности
  2. Введите Y, чтобы принять условия предоставления услуг
  3. Введите Y или N, чтобы принять или отклонить предоставление вашего адреса электронной почты разработчикам Certbot
  4. Подтвердите доменное имя или имена, для которого вы хотели бы включить HTTPS

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
(Enter ‘c’ to cancel): shola@linoxide.com

— — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
— — — — — — — — — — — — — — — — — — — — — — — — — — — — —
(Y)es/(N)o: y

— — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let’s Encrypt project and the non-profit organization that
develops Certbot? We’d like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
(Y)es/(N)o: n
Account registered.

Which names would you like to activate HTTPS for?
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
1: domain1.com
2: www.domain1.com
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter ‘c’ to cancel):
Requesting a certificate for domain1.com and www.domain1.com
Performing the following challenges:
http-01 challenge for domain1.com
http-01 challenge for www.domain1.com
Waiting for verification.
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/domain1
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/domain1
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/domain1
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/domain1

— — — — — — — — — — — — — — — — — — — — — — — — — — — —
Congratulations! You have successfully enabled https://domain1.com and
https://www.domain1.com
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/domain1.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/domain1.com/privkey.pem
Your certificate will expire on 2021-04-10. 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»
— 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

Cerbot добавит следующие записи (предложения, показывающие управляемые Certbot) в файл nginx block.

$ cat /etc/nginx/sites-enabled/domain1
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server <

server_name domain1.com www.domain1.com;

root /var/www/domain1.com;
index index.html;

location / <
try_files $uri $uri/ =404;
>

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

>

server <
if ($host = www.domain1.com) <
return 301 https://$host$request_uri;
> # managed by Certbot

if ($host = domain1.com) <
return 301 https://$host$request_uri;
> # managed by Certbot

listen 80;
listen [::]:80;

server_name domain1.com www.domain1.com;
return 404; # managed by Certbot
>
$

Просмотрите свой веб-сайт, чтобы убедиться, что значок отображается.

Кроме этого:  6 Установите программное обеспечение для резервного копирования

Процесс Обновления Сертификата

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

Выполните следующую команду, чтобы проверить процесс автоматического продления.

Заключение

В этом руководстве вы узнали, как настроить SSL-сертификат let’s encrypt на веб-сервере NGINX, работающем на Ubuntu 20.04.

Вместо Cerbot вы также можете использовать скрипт Acme Shell для автоматической выдачи и продления бесплатных сертификатов от Let’s Encrypt.

Источник

Безопасный веб-сервер Nginx с помощью Let's Encrypt в Ubuntu 18.04

Let’s Encrypt — это бесплатный открытый центр сертификации, разработанный исследовательской группой Internet Security Research Group (ISRG). Сертификатам, выданным Let’s Encrypt, сегодня доверяют почти все браузеры.

Введение

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

  • У вас есть доменное имя, указывающее на IP-адрес вашего публичного сервера. В этом уроке мы будем использовать example.com .
  • У вас установлен Nginx, следуя этим инструкциям
  • У вас есть серверный блок для вашего домена. Вы можете следовать этим инструкциям, чтобы узнать, как его создать.

Установить Certbot

Certbot — это полнофункциональный и простой в использовании инструмент, который может автоматизировать задачи по получению и обновлению SSL-сертификатов Let’s Encrypt, а также по настройке веб-серверов для использования сертификатов. Пакет certbot включен в репозитории Ubuntu по умолчанию.

Обновите список пакетов и установите пакет certbot:

Создать сильную группу Dh (Диффи-Хеллмана)

Обмен ключами Диффи – Хеллмана (DH) — это метод безопасного обмена криптографическими ключами по незащищенному каналу связи. Мы собираемся сгенерировать новый набор 2048-битных параметров DH для усиления безопасности:

При желании вы можете изменить размер до 4096 бит, но в этом случае генерация может занять более 30 минут в зависимости от энтропии системы.

Получение SSL-сертификата Let's Encrypt

Чтобы получить сертификат SSL для нашего домена, мы собираемся использовать плагин Webroot, который работает путем создания временного файла для проверки
запрошенного домена в $/.well-known/acme-challenge каталоге. Сервер Let’s Encrypt отправляет HTTP-запросы к временному файлу, чтобы убедиться, что запрошенный домен разрешается на
сервер, на котором работает certbot.

Чтобы упростить задачу, мы собираемся сопоставить все HTTP-запросы для .well-known/acme-challenge одного каталога /var/lib/letsencrypt .

Следующие команды создадут каталог и сделают его доступным для записи для сервера Nginx.

Чтобы избежать дублирования кода, создайте следующие два фрагмента, которые мы собираемся включить во все наши файлы блоков сервера Nginx.

Откройте свой текстовый редактор и создайте первый фрагмент letsencrypt.conf :

Создайте второй фрагмент кода, ssl.conf который включает в себя модули обработки, рекомендованные Mozilla , включает сшивание OCSP,
HTTP Strict Transport Security (HSTS) и применяет несколько ориентированных на безопасность заголовков HTTP.

После создания фрагментов откройте блок сервера домена и letsencrypt.conf включите фрагмент, как показано ниже:

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

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

Теперь вы можете запустить Certbot с подключаемым модулем webroot и получить файлы сертификатов SSL, выполнив:

Если сертификат SSL получен успешно, certbot напечатает следующее сообщение:

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

В приведенной выше конфигурации мы форсируем HTTPS и перенаправляем с www на версию без www.

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

Автообновление SSL-сертификата Let's Encrypt

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

Поскольку мы используем подключаемый модуль certbot webroot после обновления сертификата, нам также необходимо перезагрузить службу nginx. Добавьте —renew-hook «systemctl reload nginx» в /etc/cron.d/certbot файл так, чтобы он выглядел так:

Чтобы протестировать процесс обновления, вы можете использовать —dry-run переключатель certbot :

Если ошибок нет, значит процесс продления прошел успешно.

Вывод

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

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

Источник