Как обезопасить Nginx с Let’s Encrypt на Ubuntu | Блог Timeweb Cloud

Ssl и tls — в чём разница?

В 90-х годах прошлого века компания Netscape разработала SSL-сертификат, чтобы обезопасить интернет-соединение. Но уже в 1999 году были произведены существенные доработки сертификата, потому что в его начальных версиях было немало недостатков. Такая новая версия получила название TLS — transport layer security — защита транспортного уровня.

Автоматическое обновление wildcard-сертификатов

Процесс довольно прост. Для выпуска wildcard-сертификата необходимо выполнить DNS challenge request, используя протокол ACMEv2.

Асиметричное шифрование

Каждая сторона имеет два ключа — частный и публичный. Они известны только владельцу и любому клиенту соответственно. Когда клиент отправляет сообщение, он находит публичный ключ сервера и шифрует сообщение. Сервер же расшифровывает сообщение при помощи своего частного ключа, то же самое работает и в обратную сторону. 

Вручную

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

Для чего производится настройка nginx и его виртуальных хостов

Итак, у нас в настройках letsencrypt в конфиге /etc/letsencrypt/cli.ini прописано, что аутентификация проходит с помощью плагина Webroot (строка authenticator = webroot) и то, что все нужные для аутентификации файлы нужно искать в указанной папке (строка webroot-path = /var/www/html).

Дополнения

Команда renew включает в себя перехваты для запуска команд или скриптов до или после обновления сертификата. Например, если у вас есть один сертификат, полученный с помощью автономного плагина, вам может потребоваться остановить веб-сервер перед обновлением, поэтому необходимо остановить, а затем запустить веб-сервер после завершения работы плагина. Пример:

Команды pre-hook и post-hook запускаются до и после каждой попытки обновления. Если вы хотите, чтобы ваш скрипт запускался только после успешного обновления, используйте команду deploy-hook в такой команде.

Ключ шифрования

Ещё одна очень важная роль SSL-сертификата — шифровать данные. Когда браузер понимает, что с сайтом всё в порядке, и устанавливает соединение, начинается обмен шифрами. Криптографическое шифрование бывает ассиметричным или симметричным.

Похожее:  guides/git-terminal.md at master · netology-code/guides · GitHub

Настройка

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

ssl.conf

# vim /etc/nginx/bx/conf/ssl.conf


Если у вас уже были установлены сертификаты, удаляем или комментируем строки с ними и вставляем новые:

Настройка bind для rfc2136

Сгенерируйте секретный TSIG-ключ:

$ tsig-keygen -a HMAC-SHA512 example-key

и добавьте его в файл конфигурации:

/etc/named.conf

Настройка nginx и его виртуальных хостов для получения ssl-сертификатов let’s encrypt

Для того, чтобы любой виртуальный хост NGiNX мог при запросе к папке /.well-known отдавать документы из папки /var/www/html на сервере (а не искать её в своей локальной папке хоста), нужно ко всем виртуальным хостам добавить запись об этом:

location /.well-known {
    root /var/www/html;
}

Так хостов на сервере не один и не два, создадим файл letsencrypt с этой записью, поместим его в папку настроек NGiNX /etc/nginx и будем вызывать при необходимости в конфигах виртуальных хостов:

include /etc/nginx/letsencrypt;

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

Обновление

Сертификат выдается на

90 дней

, так что после этого срока нужно будет его обновить. Делается это командой:

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

Запросите сертификат для domain.tld, используя /var/lib/letsencrypt/ в качестве общедоступного пути:

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

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

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

Вам необходимы:

Расположение сертификатов

Все сгенерированные ключи и выданные сертификаты можно найти в домене /etc/letencrypt/live/$domain. Вместо того, чтобы копировать, укажите конфигурацию сервера непосредственно на эти файлы (или создайте символические ссылки). Во время обновления, /etc/letencrypt/live обновляется последними полученными файлами.

Доступны следующие файлы

privkey.pem – закрытый ключ сертификата

Это то, что Apache требуется для SSLCertificateKeyFile и Nginx для ssl_certificate_key.

fullchain.pem – все сертификаты, включая сертификат сервера (сертификат aka leaf или сертификат конечного объекта). Сертификат сервера является первым в этом файле, за которым следуют любые промежуточные продукты. Это то, что Apache> = 2.4.8 требуется для SSLCertificateFile, и что нужно Nginx для ssl_certificate.

cert.pem и chain.pem (менее распространены) cert.pem содержит сертификат сервера сам по себе, а chain.pem содержит дополнительный промежуточный сертификат или сертификаты, которые понадобятся веб-браузерам для проверки сертификата сервера.

Если вы поставите один из этих файлов на свой веб-сервер, вы должны предоставить оба из них, или некоторые браузеры будут показывать ошибки «Это соединение без доверия» для вашего сайта. Apache <2.4.8 нуждается в них для SSLCertificateFile. и SSLCertificateChainFile, соответственно.

Симметричное шифрование

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

Смена адреса уведомления об истечении срока действия сертификата

Сертификат от Let’s Encrypt можно использовать не только в Apache, но Asterisk, Postdix, Dovecot и других приложениях Linux

Смена пользователя папки /.well-known для успешной работы letsencrypt

Если все работы ведутся не под тем пользователем, под которым будет производиться автоматическая аутентификация letsencrypt, (а это так), то нужно назначить правильные права доступа к этой папке. Для этого нужно вспомнить (или узнать) под каким пользователем работает NGiNX на сервере.

Управление блоками server в nginx

Следующий пример можно использовать во всех блоках server при управлении этими файлами вручную:

/etc/nginx/sites-available/example

Управление виртуальными хостами apache

Следующий пример можно использовать во всех виртуальных хостах[ссылка недействительна: раздел не найден] при управлении этими файлами вручную:

Установка

Первое, что необходимо сделать — установить

git

# yum install git

Далее переходим в директорию

/tmp

# cd /tmp


С помощью git скачиваем файлы Let’s Encrypt. Сам скрипт теперь называется

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

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