Auto SSL в ISPmanager 6
Встроенный модуль ISPmanager 6 выпускает бесплатные сертификаты только через Let's Encrypt. Адрес ACME-сервера в нём можно поменять параметром LetsencryptAcmeUrl в /usr/local/mgr5/etc/ispmgr.conf, но ключи внешней привязки аккаунта (EAB), которые требует Sectigo, панель не поддерживает. Поэтому для Auto SSL рабочая схема такая: сертификат выпускает acme.sh на том же сервере, а в панель он добавляется как «Существующий».
Где взять ключи
- В личном кабинете 1host.kz/bill откройте услугу «Auto SSL (Sectigo ACME)» (заказать — на странице Auto SSL).
- Нажмите «Configure Now» («Настроить»), введите домены в «Single Domains» (
wwwи безwww— один домен); wildcard — в «Wildcard Domains». - Через 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.
Добавление сертификата в панель
- В ISPmanager откройте «SSL-сертификаты» → «Добавить сертификат» → тип «Существующий».
- «Пользователь» — владелец сайта (
user1). - «SSL-сертификат» — содержимое
example.kz.cer(только сертификат домена, формат PEM). - «Ключ SSL-сертификата» — содержимое
example.kz.key. - «Цепочка SSL-сертификатов» — содержимое
ca.cer. - Сохраните. Затем «Сайты» → выберите сайт → «Изменить» → включите защищённое соединение, выберите добавленный сертификат и, если нужно, «Перенаправлять 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 продлевается счётом раз в год; пока она активна, выпуск и продление не ограничены.