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 restartb. Для 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 startd. Для 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 restarte. Для 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) и иметь:
- Созданный веб-сайт для вашего сервера через ISPConfig;
- Веб-сайт доступен в Интернете;
- SSL ISPConfig включен (через установку или обновление);
- Успешно включенный SSL Let’s Encrypt для веб-сайта.
Get new posts in your inbox
No spam. Unsubscribe anytime.