SSL-сертификаты · 6 min read · Sep 24, 2025

Обеспечение безопасности ISPConfig 3.1 с помощью бесплатного SSL-сертификата Let's Encrypt

ВАЖНО: Этот гид несовместим с ISPConfig 3.2 и новее, так как в ISPConfig 3.2 и более новых версиях встроен Let’s Encrypt для всех сервисов. SSL-сертификат Let’s Encrypt настраивается автоматически во время установки, поэтому больше нет необходимости вручную настраивать Let’s Encrypt для любого сервиса.

Автор: ahrasis

Этот учебник показывает, как создать и настроить бесплатный SSL-сертификат Let’s Encrypt для интерфейса ISPConfig (порт 8080), системы электронной почты (Postfix и Dovecot/Courier), FTP-сервера (pure-ftpd) и Monit. Команды в этом учебнике были протестированы на Ubuntu 16.04, они также должны работать для Debian. Для CentOS могут потребоваться некоторые изменения.

Помощь по этому руководству доступна в этой теме форума.

Создание веб-сайта с использованием FQDN хоста сервера ISPConfig

Создайте сайт для вашего сервера в панели ISPConfig через Сайты > Веб-сайт > Добавить новый веб-сайт. Помните! Это ваш веб-сайт сервера, и он должен содержать полностью квалифицированное доменное имя (FQDN) вашего сервера. В этом руководстве я буду ссылаться на него как на hostname -f.

hostname -f

Надеюсь, это сработает без каких-либо изменений на вашем сервере.

Доступ к веб-сайту ISPConfig в Интернете

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

Включение SSL для панели управления ISPConfig 3 (порт 8080)

Если вы не включили SSL во время настройки ISPConfig, т.е. для его панели управления на порту 8080, включите его, введя ispconfig_update.sh в терминале и выбрав да для SSL. Нам не нужно, чтобы это был правильный ключ, и мы не хотим его сохранять, но мы хотим работать быстрее, поэтому мы можем просто нажать Enter для всех его полей. Когда вы закончите, самоподписанный SSL должен уже быть включен для вашего ISPConfig.

Проверка SSL для панели управления ISPConfig 3 (порт 8080)

Проверьте в вашем браузере, открыв панель управления ISPConfig на порту 8080. Обратите внимание, что на этом этапе вы можете получить предупреждение, так как созданные SSL-файлы самоподписанные, но браузер подтвердит, что ваш ISPConfig имеет включенный SSL или нет.

Обеспечение безопасности веб-сайта ISPConfig с помощью SSL Let’s Encrypt

Если вышеуказанное выполнено, вернитесь в панель ISPConfig > Сайты > Веб-сайт > Имя веб-сайта, затем нажмите кнопки SSL и Let’s Encrypt и сохраните - чтобы создать файлы SSL Let’s Encrypt и включить их для вашего сайта сервера. Если успешно, ваш сайт сервера теперь должен использовать эти файлы SSL Let’s Encrypt, но не ваша страница ISPConfig 8080. Если неудачно, вы не сможете продолжить, поэтому проверьте его файл журнала для подсказки.

Изменение панели управления ISPConfig 3 (порт 8080)

Если SSL Let’s Encrypt уже работает, перейдите к вашему серверному терминалу, получите права root через sudo su и используйте следующую команду, чтобы создать резервную копию и заменить созданные самоподписанные SSL-файлы на файлы SSL Let’s Encrypt.

cd /usr/local/ispconfig/interface/ssl/  
mv ispserver.crt ispserver.crt-$(date +"%y%m%d%H%M%S").bak  
mv ispserver.key ispserver.key-$(date +"%y%m%d%H%M%S").bak  
mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak  
ln -s /etc/letsencrypt/live/$(hostname -f)/fullchain.pem ispserver.crt  
ln -s /etc/letsencrypt/live/$(hostname -f)/privkey.pem ispserver.key  
cat ispserver.{key,crt} > ispserver.pem  
chmod 600 ispserver.pem
  • Если вы не создавали ispserver.pem ранее, вы можете проигнорировать третью строку, которая предназначена для переименования существующего, если он есть, в резервную копию.
  • Обратите внимание, что мы используем папку live Let’s Encrypt вместо папки archive.
  • Также обратите внимание на последнюю строку, где ispserver.pem создается путем объединения файлов, таким образом, он не будет автоматически обновляться Let’s Encrypt в отличие от других файлов, которые мы просто связали, поэтому мы займемся этим в последней части этого руководства.
  • Также обратите внимание, что вы можете ввести hostname -f или server1.example.com, так как результат будет одинаковым, потому что hostname -f это server1.example.com.

Использование тех же сертификатов SSL Let’s Encrypt для других основных сервисов

В качестве дополнительных советов, основываясь на Обеспечении безопасности вашей установки ISPConfig 3, вы можете использовать символическую ссылку на ispserver.key или .crt или .pem вместо того, чтобы напрямую указывать ваш postfix, dovecot, courier, pure-FTPd и monit на файлы SSL Let’s Encrypt. Для dovecot, если он уже использует файлы SSL postfix, вам безопасно это игнорировать. В деталях вам нужно сделать следующее:

a. Для Postfix

cd /etc/postfix/  
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak  
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak  
ln -s /usr/local/ispconfig/interface/ssl/ispserver.crt smtpd.cert  
ln -s /usr/local/ispconfig/interface/ssl/ispserver.key smtpd.key  
service postfix restart  
service dovecot restart

b. Для dovecot: (* Обратите внимание, что это не должно существовать вместе с courier)

Проверьте, существует ли этот код, используя nano /etc/dovecot/dovecot.conf

[...]  
ssl_cert = 

Оставьте их как есть, если они существуют. В противном случае исправьте их. В любом случае, команда service dovecot restart уже охвачена выше.

c. Для courier: (* Обратите внимание, что это не должно существовать вместе с dovecot)

cd /etc/courier/  
mv imapd.pem imapd.pem-$(date +"%y%m%d%H%M%S").bak  
mv pop3d.pem pop3d.pem-$(date +"%y%m%d%H%M%S").bak  
ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem imapd.pem  
ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem pop3d.pem  
service courier-imap-ssl stop  
service courier-imap-ssl start  
service courier-pop-ssl stop  
service courier-pop-ssl start

d. Для pure-FTPd:

cd /etc/ssl/private/  
mv pure-ftpd.pem pure-ftpd.pem-$(date +"%y%m%d%H%M%S").bak  
ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem pure-ftpd.pem  
chmod 600 pure-ftpd.pem  
service pure-ftpd-mysql restart

e. Для monit: (Если вы установили его на своем сервере)

nano /etc/monit/monitrc

Добавьте вышеуказанную символическую ссылку на ispserver.pem, которую мы создали для pure-ftpd, также сюда:

[...]  
set httpd port 2812 and  
SSL ENABLE  
PEMFILE /etc/ssl/private/pure-ftpd.pem  
allow admin:'secretpassword'  
[...]  

И перезапустите monit:

service monit restart

Создание скрипта автоматического обновления для вашего файла ISPConfig Pem (ispserver.pem)

На этом последнем этапе, который я еще не нашел в каких-либо руководствах, является автоматическое обновление ispserver.pem, как ранее упоминалось. В настоящее время его необходимо вручную изменять сразу после того, как Let’s Encrypt автоматически обновил ваши SSL-файлы сервера. Чтобы избежать этого, вы можете установить incron, как предложено в соответствующем учебнике по incron, и создать скрипт для автоматического обновления вашего файла ispserver.pem, следующим образом:

Через команду терминала установите incron, затем создайте файл скрипта и отредактируйте его с помощью nano:

apt install -y incron  
nano /etc/init.d/le_ispc_pem.sh

Добавьте это в le_ispc_pem.sh:

#!/bin/sh  
### BEGIN INIT INFO  
# Provides: LE ISPSERVER.PEM AUTO UPDATER  
# Required-Start: $local_fs $network  
# Required-Stop: $local_fs  
# Default-Start: 2 3 4 5  
# Default-Stop: 0 1 6  
# Short-Description: LE ISPSERVER.PEM AUTO UPDATER  
# Description: Обновление ispserver.pem автоматически после обновления сертификатов ISPC LE SSL.  
### END INIT INFO  
cd /usr/local/ispconfig/interface/ssl/  
mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak  
cat ispserver.{key,crt} > ispserver.pem  
chmod 600 ispserver.pem  
chmod 600 /etc/ssl/private/pure-ftpd.pem  
service pure-ftpd-mysql restart  
service monit restart  
service postfix restart  
service dovecot restart  
service nginx restart
  • Обратите внимание, что некоторые люди не устанавливают monit, поэтому они могут безопасно удалить его. Настройте вышеуказанный скрипт соответственно.
  • Для многосерверной настройки обратитесь к сообщению #203 и добавьте данный код scp сюда, чтобы автоматизировать будущее обновление.

Затем сделаем его исполняемым, добавим root как разрешенного пользователя для incrontab и затем отредактируем файл incrontab:

chmod +x /etc/init.d/le_ispc_pem.sh  
echo "root" >> /etc/incron.allow  
incrontab -e

Добавьте эту строку в incrontab:

/etc/letsencrypt/archive/$(hostname -f)/ IN_MODIFY ./etc/init.d/le_ispc_pem.sh

Перезапуск ваших сервисов

Я думаю, что это все для обеспечения безопасности вашего сервера с Let’s Encrypt. Вы можете перезапустить ваш веб-сервер после этого.

service nginx restart

Помните: если вы используете apache, измените nginx на apache2 соответственно.

LE4ISPC

В качестве альтернативы вы можете использовать скрипт LE4ISPC, созданный для этой цели, который поддерживает как nginx, так и apache2 от ISPConfig до pure-ftpd выше, за исключением monit. Перед его использованием вы должны уже завершить вышеуказанные шаги (1-5) и иметь:

  1. Созданный веб-сайт для вашего сервера через ISPConfig;
  2. Веб-сайт доступен в Интернете;
  3. SSL ISPConfig включен (через установку или обновление);
  4. Успешно включенный SSL Let’s Encrypt для веб-сайта.
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.