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-сертификата — шифровать данные. Когда браузер понимает, что с сайтом всё в порядке, и устанавливает соединение, начинается обмен шифрами. Криптографическое шифрование бывает ассиметричным или симметричным.
Настройка
Открываем конфигурационный файл
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. Сам скрипт теперь называется