Вверх

 
  • Комплексное ИТ обслуживание Вашего бизнеса 24 часа 7 дней в неделю!
  • IP телефония со знанием дела. Установка и настройка.
  • Поставки оборудования по выгодным ценам

09.07.2023 - Установка сертификатов Letsencrypt в Zimbra на примере старой системы Ubuntu 14.04

В данной статье речь пойдет о способе установки и продления SSL сертификата Letsencrypt для почтового сервера Zimbra на старой версии Ubuntu.

 

Как-то раз в рамках предоставляемых нами услуг ИТ-аутсорсинга возникла задача, установить SSL сертификат на веб станицу почтовика Zimbra. Решено было использовать классический Letsencrypt так как он бесплатный и имеет удобный механизм продления. Далее речь пойдет о выпуске сертификата Letsencrypt и об установке выпущенного ранее сертификата в Zimbra.

Выпуск сертификата Letsencrypt.

На современной Ubuntu операция выпуска сертификата довольно простая, достаточно выбрать ACME-клиент, обычно это certbot. Открыть нужные порты на сервере 80 и 443. Выбрать способ подтверждения Webroot или standalone.

Все описанное сверху справедливо и для старой системы, но есть нюанс, что Certbot не устанавливается корректно, например для версии 14.04 на момент 2023 года его просто нет.

Желания ставить сторонние репозитории нет, а в офф репе минимальный сертбот для убунты 16.06. Избежать приключений с окружением для certbot и поиском других ACME клиентов помог Docker.

Устанавливаем Docker

Для начала обновляем информацию о пакетах.

1
sudo apt-get update

Далее переходим к установке Docker (В вашей версии linux название пакетов может отличаться, но скорее всего это не станет припятсвием, так как в интернете много манов по его установке, также можно обратиться за помощью к нам).

1
sudo apt install docker.io

В результате получил следующий вывод и диалог согласия на установку пакета.

 

Для проверки установки docker можно использовать команду

1
sudo docker run hello-world

 И её вывод

Compose из родного репозитория установить не получится, при желании можно использовать Pip. В данном случае решили обойтись без него

Скачиваем контейнер certbot\certbot.

1
sudo docker pull certbot/certbot

 

Далее будем обращаться к docker из консоли.

Вот пример готовой команды :

1
sudo docker run -it --rm  -p 80:80   -v /home/letsencrypt/certs:/etc/letsencrypt:rw  -v /home/letsencrypt/data:/data/letsencrypt:rw  certbot/certbot   certonly   --force-renewal --preferred-chain  "ISRG Root X1" --key-type rsa  --standalone  -d example.domain.com --email=example@domain.com --agree-tos  --no-eff-email                          

 

Разберем команду на составляющие:

1
sudo docker run -it --rm

 docker run  Тут мы запускаем контейнер и задаем ему параметры

--it  Опция -t назначает псевдо-TTY, подключенный к STDIN контейнера. Зачастую используется с опцией --interactive, -i - например, если вам нужно подключиться к оболочке (bash) внутри docker-контейнера для выполнения каких-то действий

--rm флаг, автоматически удаляющий контейнер после завершения процесса. По умолчанию контейнеры не удаляются.

Далее идет проброс порта –p , в нашем случае -p 80:80. Для того, чтобе ACME имел доступ по 80 порту и авторизоваться.

-v Монтирование тома, в нашем случае обязательно монтируем две папки и добавляем атрибуты rw
-v /home/letsencrypt/certs:/etc/letsencrypt:rw  -v /home/letsencrypt/data:/data/letsencrypt:rw

Далее идет Имя самого контейнера certbot\certbot и опции выпуска сертификата.

Из опций могу отметить те, на которые стоитобратить внимание:
 Опция --preferred-chain "ISRG Root X1" обязательна для получения правильной цепочки, без этой опции даже если установлен корневой сертификат ISRG Root X1

Верифицировать pem файлы не получится.

Опция --key-type rsa позволит нам сразу получить нужный формат ключа без различных танцев с бубном и правок настроек, так как по умолчанию выдается другой тип ключа.

В нашем случае используем –Standalone способ подтверждения, так в нашем случае порт 80 никем не слушается так как используется 443. При этом способе аутентификации поднимается свой временный вебсервер.

Если у вас прослушивается 80 порт вашим веб сервером можно его временно выключить либо использовать другой способ Аутентификации - Webroot. Проверить чем занят порт можно с помощью утилиты lsof.

 

Теперь перейдем к самой команде, вводим её в консоль.

Важно! LetsEncrypt ограничивает Число неудачных валидаций - не более 5 неудачных попыток, для одного аккаунта, для одного доменного имени, в течение часа.

Поэтому советую добавить опцию –dry-run конец команды.

1
sudo docker run -it --rm  -p 80:80   -v /home/letsencrypt/certs:/etc/letsencrypt:rw  -v /home/letsencrypt/data:/data/letsencrypt:rw  certbot/certbot   certonly   --force-renewal --preferred-chain  "ISRG Root X1" --key-type rsa  --standalone  -d example.domain.com --email=example@domain.com --agree-tos  --no-eff-email –dry-run                          

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

Если тестовый запуск прошел успешно, то можно переходит к основной команде.

1
sudo docker run -it --rm  -p 80:80   -v /home/letsencrypt/certs:/etc/letsencrypt:rw  -v /home/letsencrypt/data:/data/letsencrypt:rw  certbot/certbot   certonly   --force-renewal --preferred-chain  "ISRG Root X1" --key-type rsa  --standalone  -d example.domain.com --email=example@domain.com --agree-tos  --no-eff-email                          

В результате должны получить следующий вывод

1
2
3
4
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.domain.ru/fullchain.pem
   Your key file has been saved at::

У выполнения этой команды есть нюанс, в директории etc/letsencrypt/live/example.domain.ru/ будут находиться только симлинки.

Используем команду lslah и видим где лежат сертификаты.