Помощь

Auto SSL в ISPmanager 6

Встроенный модуль ISPmanager 6 выпускает бесплатные сертификаты только через Let's Encrypt. Адрес ACME-сервера в нём можно поменять параметром LetsencryptAcmeUrl в /usr/local/mgr5/etc/ispmgr.conf, но ключи внешней привязки аккаунта (EAB), которые требует Sectigo, панель не поддерживает. Поэтому для Auto SSL рабочая схема такая: сертификат выпускает acme.sh на том же сервере, а в панель он добавляется как «Существующий».

Где взять ключи

  1. В личном кабинете 1host.kz/bill откройте услугу «Auto SSL (Sectigo ACME)» (заказать — на странице Auto SSL).
  2. Нажмите «Configure Now» («Настроить»), введите домены в «Single Domains» (www и без www — один домен); wildcard — в «Wildcard Domains».
  3. Через 5–30 секунд появятся ACME account ID, EAB MAC ID, EAB MAC key, Server URL.

Ниже: Server URL — https://acme.sectigo.com/v2/DV, YOUR_EAB_KID — EAB MAC ID, YOUR_EAB_HMAC_KEY — EAB MAC key.

Что понадобится

  • Доступ root по SSH к серверу с ISPmanager 6.
  • Сайт уже создан в панели, домен указывает на сервер, порт 80 открыт.
  • Имя пользователя панели, которому принадлежит сайт (в примерах — user1), и корневой каталог сайта: у ISPmanager это обычно /var/www/user1/data/www/example.kz. Точный путь смотрите в панели: «Сайты» → сайт → «Корневой каталог».

Выпуск сертификата через acme.sh

Установите acme.sh от root и зарегистрируйте аккаунт (один раз):

curl https://get.acme.sh | sh -s [email protected]
source ~/.bashrc
acme.sh --register-account --server https://acme.sectigo.com/v2/DV \
  --eab-kid YOUR_EAB_KID --eab-hmac-key YOUR_EAB_HMAC_KEY
acme.sh --set-default-ca --server https://acme.sectigo.com/v2/DV

Выпустите сертификат через корневой каталог сайта:

acme.sh --issue -d example.kz -d www.example.kz \
  -w /var/www/user1/data/www/example.kz

Файлы появятся в ~/.acme.sh/example.kz_ecc/ (для ключей ECC — по умолчанию) — fullchain.cer, example.kz.key, ca.cer. Подробнее о режимах выпуска — в статье Auto SSL через acme.sh.

Добавление сертификата в панель

  1. В ISPmanager откройте «SSL-сертификаты» → «Добавить сертификат» → тип «Существующий».
  2. «Пользователь» — владелец сайта (user1).
  3. «SSL-сертификат» — содержимое example.kz.cer (только сертификат домена, формат PEM).
  4. «Ключ SSL-сертификата» — содержимое example.kz.key.
  5. «Цепочка SSL-сертификатов» — содержимое ca.cer.
  6. Сохраните. Затем «Сайты» → выберите сайт → «Изменить» → включите защищённое соединение, выберите добавленный сертификат и, если нужно, «Перенаправлять HTTP-запросы в HTTPS».

Вывести содержимое файлов для копирования: cat ~/.acme.sh/example.kz_ecc/example.kz.cer и т. д. Панель хранит свою копию в /var/www/httpd-cert/user1/.

Автоматическое обновление после продления

acme.sh продлит сертификат сам примерно за 30 дней до окончания, но панель об этом не узнает — у неё своя копия. Чтобы не переносить файлы руками каждые два месяца, укажите acme.sh, куда класть обновлённый сертификат, и команду перезагрузки веб-сервера:

ls /var/www/httpd-cert/user1/          # найдите файлы добавленного сертификата
acme.sh --install-cert -d example.kz \
  --cert-file      /var/www/httpd-cert/user1/example.kz.crt \
  --key-file       /var/www/httpd-cert/user1/example.kz.key \
  --ca-file        /var/www/httpd-cert/user1/example.kz.crtca \
  --fullchain-file /var/www/httpd-cert/user1/example.kz.crt \
  --reloadcmd      "systemctl reload nginx; systemctl reload httpd || systemctl reload apache2"

УТОЧНИТЬ: точные имена файлов сертификата в /var/www/httpd-cert/USERNAME/ (панель именует их по схеме ИМЯ_НОМЕР, например example-crt_1) — подставьте те, что увидите в ls; путь для --fullchain-file должен совпадать с файлом, на который ссылается конфиг nginx/Apache сайта.

Альтернатива без правки файлов панели — после каждого продления заново вставлять содержимое в «SSL-сертификаты» → сертификат → «Изменить». Если сомневаетесь, напишите в поддержку ONEHOST: настроим автоматическую подмену за вас.

Проверка и продление

Откройте сайт по HTTPS и посмотрите сертификат в браузере: издатель должен быть Sectigo. Из консоли:

echo | openssl s_client -connect example.kz:443 -servername example.kz 2>/dev/null \
  | openssl x509 -noout -issuer -dates
acme.sh --list

Продление выполняет ежедневное задание cron acme.sh (crontab -l | grep acme.sh), после него запускается --reloadcmd. Проверить цепочку целиком: acme.sh --renew -d example.kz --force, затем снова openssl — дата «notAfter» должна сдвинуться. В самой панели сертификат типа «Существующий» помечен как не продлеваемый — это нормально, продлением занимается acme.sh. Подписка Auto SSL продлевается счётом раз в год; пока она активна, выпуск и продление не ограничены.

Остались вопросы - пишите