Zammad по https, nginx, ssl

Настройка работы Zammad по https, nginx, ssl, tls

В данной статье рассмотрим настройку бесплатного хелпдеска (HelpDessk) Zammad на работу по HTTPS. Разберем способ получения бесплатного сертификата через Let’s Encrypt и установим его на веб-сервер Nginx.   

Содержание

Введение

В одной из прошлых статей, посвященных хелпдеску Zammad, была разобрана установка HelpDesk Zammad. По умолчанию настройка делается на работу по HTTP. Каждый грамотный IT-специалист понимает, что это не есть хорошо. Поэтому в этой статье мы покажем как настроить работу Zammad по HTTPS.

Рассмотрим вариант получения сертификата от Let’s Encrypt. Можно обойтись и самоподписанным сертификатом, но мы предполагаем, что наш сервис будет доступен клиентам через интернет и, чтобы избежать вопросов на темы почему: "Сертификат безопасности не является доверенным", "Ваше соединение не защищено", воспользуемся бесплатным центром сертификации Let’s Encrypt. Важно отметить, что сертификат выдается на три месяца и его нужно продлевать. Для получения и продления сертификаты будем использовать утилиту certbot. Именно ее рекомендуют использовать разработчики Zammad

В итоге получим HelpDesk Zammad, работающий на веб-сервере Nginx, доступный по протоколу HTTPS и имеющий сертификат от доверенного центра сертификации Let’s Encrypt, который автоматически продлевается каждые три месяца.

Описание тестового стенда

  • Сервер Ubuntu server 20.04.2
  • Веб - сервер Nginx
  • HelpDesk Zammad 4.1 (чистая установка с настройками по умолчанию)
  • Сертификат от Let’s Encrypt
  • Утилита для для работы с сертификатом certbot
  • Порт веб - сервера доступный извне TCP 443
  • Доменное имя третьего уровня (zammad.youdomain.ru) с настроенной А записью на внешний ip веб сервера с Zammad. 

План работ. Краткое описание действий

  • Устанавливаем certbot
  • Получаем и устанавливаем сертификат от Let’s Encrypt  с помощью утилиты certbot
  • Копируем подготовленный разработчиками Zammad конфиг zammad_ssl.conf для веб-сервера Nginx в /etc/nginx/sites-enabled/
  • Перезагружаем веб-сервер Nginx
  • Проверяем настройку автоматического продления сертификата

 

Установка certbot

 Перед установкой certbot нужно установить python3-certbot-nginx. После этого устанавливаем саму утилиту certbot

sudo apt install python3-certbot-nginx
sudo apt install certbot

Более детальную информацию про установку и работу с программой certbot можно найти на официальном сайте

Получаем и устанавливаем сертификат от Let’s Encrypt  с помощью утилиты certbot

Для получения сертификата используем утилиту certbot. Синтаксис следующий:

certbot --<webserver> -d example.com

В нашем случае мы указываем webserver - nginx (могут быть httpd, apache, nginx) и наш домен zammad.youdomain.ru

certbot --nginx -d zammad.youdomain.ru

После успешного получения сертификата утилита certbot спросит, хотите ли Вы автоматически продлевать сертификат. 
Если Вы хотите продлевать сертификат вручную выбирайте [1] not redirect, если хотите продлевать автоматически выбирайте [2] redirect.
В нашем случае мы выбираем [2] redirect

Настройка веб - сервера Nginx

Утилита certbot сама вносит изменения и настраивает веб - сервер Nginx, однако разработчики Zammad предлагают добавить следующие параметры в конфигурационный файл /opt/zammad/contrib/nginx/zammad.conf  

	ssl_session_cache shared:SSL:10m;
	ssl_stapling on;
	ssl_stapling_verify on;
	add_header Strict-Transport-Security "max-age=31536000" always;

	location = /robots.txt  {
     access_log off; log_not_found off;
	}

	location = /favicon.ico {
     access_log off; log_not_found off;
	}

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

sudo nginx -t

 Если проверка успешно пройдена, применяем новые конфиги

sudo systemctl reload nginx

Если при проверке возникают ошибки, обычно указывается строка ошибки. Если Вы используете редактор Nano, рекомендую включить отображение строк. Это можно сделать, нажав клавиши Alt + Shift + 3

Проверка настройки автоматического продления сертификата

Утилита cerbot создает задание на продление в cron. Чтобы убедиться, что сертификат будет автоматически выпускаться, запустите команду проверки.

sudo certbot renew --dry-run

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